You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2004/02/03 07:51:21 UTC
cvs commit: incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/util UnclosableInputStream.java
djencks 2004/02/02 22:51:21
Modified: modules/connector/src/java/org/apache/geronimo/connector/deployment
Connector_1_0Module.java Connector_1_5Module.java
modules/connector/src/test/org/apache/geronimo/connector/deployment
Connector_1_0Test.java Connector_1_5Test.java
Added: modules/connector/src/java/org/apache/geronimo/connector/deployment
AbstractConnectorModule.java
AbstractRARConfigurationFactory.java
RAR_1_0ConfigurationFactory.java
RAR_1_5ConfigurationFactory.java
modules/deployment/src/java/org/apache/geronimo/deployment/util
UnclosableInputStream.java
Removed: modules/connector/src/java/org/apache/geronimo/connector/deployment
ConnectorModule.java RARConfigurationFactory.java
Log:
Read the standard dd from the deployed package. set up the classpath. Work around some stupid behavior of xmlbeans
Revision Changes Path
1.2 +13 -32 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/Connector_1_0Module.java
Index: Connector_1_0Module.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/Connector_1_0Module.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Connector_1_0Module.java 2 Feb 2004 22:10:35 -0000 1.1
+++ Connector_1_0Module.java 3 Feb 2004 06:51:21 -0000 1.2
@@ -58,10 +58,11 @@
import java.beans.PropertyEditor;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
-import java.net.URL;
import java.util.Collections;
+import java.util.jar.JarInputStream;
import javax.management.AttributeNotFoundException;
import javax.management.InvalidAttributeValueException;
@@ -76,6 +77,7 @@
import org.apache.geronimo.deployment.ConfigurationCallback;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.DeploymentModule;
+import org.apache.geronimo.deployment.util.UnclosableInputStream;
import org.apache.geronimo.gbean.DynamicGAttributeInfo;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoFactory;
@@ -85,11 +87,11 @@
import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
import org.apache.geronimo.xbeans.geronimo.GerConnectionDefinitionType;
import org.apache.geronimo.xbeans.geronimo.GerConnectionmanagerType;
-import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
import org.apache.geronimo.xbeans.geronimo.GerResourceadapterType;
import org.apache.geronimo.xbeans.j2ee.connector_1_0.ConfigPropertyType;
import org.apache.geronimo.xbeans.j2ee.connector_1_0.ConnectorDocument;
import org.apache.geronimo.xbeans.j2ee.connector_1_0.ResourceadapterType;
+import org.apache.xmlbeans.XmlException;
import org.w3c.dom.Document;
/**
@@ -98,42 +100,24 @@
* @version $Revision$ $Date$
*
* */
-public class Connector_1_0Module implements DeploymentModule {
+public class Connector_1_0Module extends AbstractConnectorModule implements DeploymentModule {
- private final static String BASE_CONNECTION_MANAGER_FACTORY_NAME = "geronimo.management:J2eeType=ConnectionManager,name=";
- private static final String BASE_MANAGED_CONNECTION_FACTORY_NAME = "geronimo.management:J2eeType=ManagedConnectionFactory,name=";
- private static final String BASE_REALM_BRIDGE_NAME = "geronimo.security:service=RealmBridge,name=";
- private static final String BASE_PASSWORD_CREDENTIAL_LOGIN_MODULE_NAME = "geronimo.security:service=Realm,type=PasswordCredential,name=";
-
- private final URI configID;
private ConnectorDocument connectorDocument;
- private GerConnectorDocument geronimoConnectorDocument;
- private final ObjectName connectionTrackerNamePattern;
- private URL moduleArchive;
-
- public Connector_1_0Module(URI moduleID, URL moduleArchive, ConnectorDocument connectorDocument, GerConnectorDocument geronimoConnectorDocument, ObjectName connectionTrackerNamePattern) {
- this.configID = moduleID;
- this.moduleArchive = moduleArchive;
- this.connectorDocument = connectorDocument;
- this.geronimoConnectorDocument = geronimoConnectorDocument;
- this.connectionTrackerNamePattern = connectionTrackerNamePattern;
+
+ public Connector_1_0Module(URI configID, InputStream moduleArchive, Object geronimoConnectorDocument, ObjectName connectionTrackerNamePattern) {
+ super(configID, moduleArchive, geronimoConnectorDocument, connectionTrackerNamePattern);
}
public Connector_1_0Module(URI configID, InputStream moduleArchive, Document deploymentPlan, ObjectName connectionTrackerNamePattern) {
- this.configID = configID;
- this.connectionTrackerNamePattern = connectionTrackerNamePattern;
+ super(configID, moduleArchive, null, connectionTrackerNamePattern);
}
public Connector_1_0Module(URI configID, File moduleArchive, Document deploymentPlan, ObjectName connectionTrackerNamePattern) {
- this.configID = configID;
- this.connectionTrackerNamePattern = connectionTrackerNamePattern;
+ super(configID, null, null, connectionTrackerNamePattern);
}
- public void init() throws DeploymentException {
- }
-
- public void generateClassPath(ConfigurationCallback callback) throws DeploymentException {
- //I have no idea
+ protected void getConnectorDocument(JarInputStream jarInputStream) throws XmlException, IOException {
+ connectorDocument = ConnectorDocument.Factory.parse(new UnclosableInputStream(jarInputStream));
}
public void defineGBeans(ConfigurationCallback callback, ClassLoader cl) throws DeploymentException {
@@ -142,7 +126,6 @@
for (int i = 0; i < geronimoResourceAdapter.getOutboundResourceadapter().getConnectionDefinitionArray().length; i++) {
GerConnectionDefinitionType geronimoConnectionDefinition = geronimoResourceAdapter.getOutboundResourceadapter().getConnectionDefinitionArray(i);
assert geronimoConnectionDefinition != null: "Null GeronimoConnectionDefinition";
- String connectionFactoryInterfaceName = geronimoConnectionDefinition.getConnectionfactoryInterface().getStringValue();
//ConnectionManagerFactory
GerConnectionmanagerType connectionManagerFactory = geronimoConnectionDefinition.getConnectionmanager();
GBeanInfo connectionManagerFactoryGBeanInfo;
@@ -281,6 +264,4 @@
}
}
- public void complete() {
- }
}
1.2 +30 -46 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/Connector_1_5Module.java
Index: Connector_1_5Module.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/Connector_1_5Module.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Connector_1_5Module.java 2 Feb 2004 22:10:35 -0000 1.1
+++ Connector_1_5Module.java 3 Feb 2004 06:51:21 -0000 1.2
@@ -59,11 +59,14 @@
import java.beans.PropertyEditor;
import java.io.File;
import java.io.InputStream;
+import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.jar.JarInputStream;
+import java.util.jar.JarEntry;
import javax.management.AttributeNotFoundException;
import javax.management.InvalidAttributeValueException;
@@ -80,6 +83,7 @@
import org.apache.geronimo.deployment.ConfigurationCallback;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.DeploymentModule;
+import org.apache.geronimo.deployment.util.UnclosableInputStream;
import org.apache.geronimo.gbean.DynamicGAttributeInfo;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoFactory;
@@ -97,6 +101,7 @@
import org.apache.geronimo.xbeans.j2ee.ConnectionDefinitionType;
import org.apache.geronimo.xbeans.j2ee.ConnectorDocument;
import org.apache.geronimo.xbeans.j2ee.ResourceadapterType;
+import org.apache.xmlbeans.XmlException;
import org.w3c.dom.Document;
/**
@@ -105,44 +110,24 @@
* @version $Revision$ $Date$
*
* */
-public class Connector_1_5Module implements DeploymentModule {
+public class Connector_1_5Module extends AbstractConnectorModule {
- public final static String BASE_RESOURCE_ADAPTER_NAME = "geronimo.management:J2eeType=ResourceAdapter,name=";
- private final static String BASE_CONNECTION_MANAGER_FACTORY_NAME = "geronimo.management:J2eeType=ConnectionManager,name=";
- private static final String BASE_MANAGED_CONNECTION_FACTORY_NAME = "geronimo.management:J2eeType=ManagedConnectionFactory,name=";
- private static final String BASE_REALM_BRIDGE_NAME = "geronimo.security:service=RealmBridge,name=";
- private static final String BASE_PASSWORD_CREDENTIAL_LOGIN_MODULE_NAME = "geronimo.security:service=Realm,type=PasswordCredential,name=";
- private static final String BASE_ADMIN_OBJECT_NAME = "geronimo.management:service=AdminObject,name=";
-
- private final URI configID;
private ConnectorDocument connectorDocument;
- private GerConnectorDocument geronimoConnectorDocument;
- private final ObjectName connectionTrackerNamePattern;
- private URL moduleArchive;
-
- public Connector_1_5Module(URI moduleID, URL moduleArchive, ConnectorDocument connectorDocument, GerConnectorDocument geronimoConnectorDocument, ObjectName connectionTrackerNamePattern) {
- this.configID = moduleID;
- this.moduleArchive = moduleArchive;
- this.connectorDocument = connectorDocument;
- this.geronimoConnectorDocument = geronimoConnectorDocument;
- this.connectionTrackerNamePattern = connectionTrackerNamePattern;
+
+ public Connector_1_5Module(URI configID, InputStream moduleArchive, Object geronimoConnectorDocument, ObjectName connectionTrackerNamePattern) {
+ super(configID, moduleArchive, geronimoConnectorDocument, connectionTrackerNamePattern);
}
public Connector_1_5Module(URI configID, InputStream moduleArchive, Document deploymentPlan, ObjectName connectionTrackerNamePattern) {
- this.configID = configID;
- this.connectionTrackerNamePattern = connectionTrackerNamePattern;
+ super(configID, moduleArchive, null, connectionTrackerNamePattern);
}
public Connector_1_5Module(URI configID, File moduleArchive, Document deploymentPlan, ObjectName connectionTrackerNamePattern) {
- this.configID = configID;
- this.connectionTrackerNamePattern = connectionTrackerNamePattern;
+ super(configID, null, null, connectionTrackerNamePattern);
}
- public void init() throws DeploymentException {
- }
-
- public void generateClassPath(ConfigurationCallback callback) throws DeploymentException {
- //I have no idea
+ protected void getConnectorDocument(JarInputStream jarInputStream) throws XmlException, IOException {
+ connectorDocument = ConnectorDocument.Factory.parse(new UnclosableInputStream(jarInputStream));
}
public void defineGBeans(ConfigurationCallback callback, ClassLoader cl) throws DeploymentException {
@@ -150,23 +135,24 @@
GerResourceadapterType geronimoResourceAdapter = geronimoConnectorDocument.getConnector().getResourceadapter();
//ResourceAdapter setup
String resourceAdapterClassName = resourceadapter.getResourceadapterClass().getStringValue();
+ if (resourceAdapterClassName == null) {
+ throw new DeploymentException("No resource adapter class provided for J2ee Connector Architecture 1.5 adapter");
+ }
ObjectName resourceAdapterObjectName = null;
- if (resourceAdapterClassName != null) {
- GBeanInfoFactory resourceAdapterInfoFactory = new GBeanInfoFactory(ResourceAdapterWrapper.class.getName(), ResourceAdapterWrapper.getGBeanInfo());
- GBeanMBean resourceAdapterGBean = setUpDynamicGBean(resourceAdapterInfoFactory, resourceadapter.getConfigPropertyArray(), geronimoResourceAdapter.getConfigPropertySettingArray());
- try {
- resourceAdapterGBean.setAttribute("ResourceAdapterClass", cl.loadClass(resourceAdapterClassName));
- } catch (Exception e) {
- throw new DeploymentException(e);
- }
- try {
- resourceAdapterObjectName = ObjectName.getInstance(BASE_RESOURCE_ADAPTER_NAME + configID);
- } catch (MalformedObjectNameException e) {
- throw new DeploymentException("Could not construct resource adapter object name", e);
- }
- callback.addGBean(resourceAdapterObjectName, resourceAdapterGBean);
-
+ GBeanInfoFactory resourceAdapterInfoFactory = new GBeanInfoFactory(ResourceAdapterWrapper.class.getName(), ResourceAdapterWrapper.getGBeanInfo());
+ GBeanMBean resourceAdapterGBean = setUpDynamicGBean(resourceAdapterInfoFactory, resourceadapter.getConfigPropertyArray(), geronimoResourceAdapter.getConfigPropertySettingArray());
+ try {
+ resourceAdapterGBean.setAttribute("ResourceAdapterClass", cl.loadClass(resourceAdapterClassName));
+ } catch (Exception e) {
+ throw new DeploymentException(e);
+ }
+ try {
+ resourceAdapterObjectName = ObjectName.getInstance(BASE_RESOURCE_ADAPTER_NAME + configID);
+ } catch (MalformedObjectNameException e) {
+ throw new DeploymentException("Could not construct resource adapter object name", e);
}
+ callback.addGBean(resourceAdapterObjectName, resourceAdapterGBean);
+
Map connectionDefinitions = new HashMap();
for (int j = 0; j < resourceadapter.getOutboundResourceadapter().getConnectionDefinitionArray().length; j++) {
ConnectionDefinitionType connectionDefinition = resourceadapter.getOutboundResourceadapter().getConnectionDefinitionArray(j);
@@ -342,6 +328,4 @@
}
}
- public void complete() {
- }
}
1.1 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/AbstractConnectorModule.java
Index: AbstractConnectorModule.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.connector.deployment;
import java.net.URI;
import java.util.jar.JarInputStream;
import java.util.jar.JarEntry;
import java.io.IOException;
import java.io.InputStream;
import javax.management.ObjectName;
import org.apache.geronimo.deployment.DeploymentModule;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.ConfigurationCallback;
import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
import org.apache.xmlbeans.XmlException;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/02/03 06:51:21 $
*
* */
public abstract class AbstractConnectorModule implements DeploymentModule {
public final static String BASE_RESOURCE_ADAPTER_NAME = "geronimo.management:J2eeType=ResourceAdapter,name=";
protected final static String BASE_CONNECTION_MANAGER_FACTORY_NAME = "geronimo.management:J2eeType=ConnectionManager,name=";
protected static final String BASE_MANAGED_CONNECTION_FACTORY_NAME = "geronimo.management:J2eeType=ManagedConnectionFactory,name=";
protected static final String BASE_REALM_BRIDGE_NAME = "geronimo.security:service=RealmBridge,name=";
private static final String BASE_PASSWORD_CREDENTIAL_LOGIN_MODULE_NAME = "geronimo.security:service=Realm,type=PasswordCredential,name=";
protected static final String BASE_ADMIN_OBJECT_NAME = "geronimo.management:service=AdminObject,name=";
protected final URI configID;
protected final ObjectName connectionTrackerNamePattern;
protected InputStream moduleArchive;
protected GerConnectorDocument geronimoConnectorDocument;
public AbstractConnectorModule(URI configID, InputStream moduleArchive, Object geronimoConnectorDocument, ObjectName connectionTrackerNamePattern) {
this.configID = configID;
this.moduleArchive = moduleArchive;
this.geronimoConnectorDocument = (GerConnectorDocument) geronimoConnectorDocument;
this.connectionTrackerNamePattern = connectionTrackerNamePattern;
}
public void init() throws DeploymentException {
}
public void generateClassPath(ConfigurationCallback callback) throws DeploymentException {
URI moduleBase = URI.create(configID.toString() + "/");
JarInputStream jarInputStream;
try {
jarInputStream = new JarInputStream(moduleArchive);
for (JarEntry entry; (entry = jarInputStream.getNextJarEntry()) != null; jarInputStream.closeEntry()) {
String name = entry.getName();
if (name.endsWith("/")) {
continue;
}
if (name.equals("META-INF/ra.xml")) {
getConnectorDocument(jarInputStream);
continue;
}
if (name.endsWith(".jar")) {
callback.addFile(moduleBase.resolve(name), jarInputStream);
}
//native libraries?
}
} catch (IOException e) {
throw new DeploymentException(e);
} catch (XmlException e) {
throw new DeploymentException(e);
}
}
protected abstract void getConnectorDocument(JarInputStream jarInputStream) throws XmlException, IOException;
public void complete() {
}
}
1.1 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/AbstractRARConfigurationFactory.java
Index: AbstractRARConfigurationFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.connector.deployment;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import javax.enterprise.deploy.model.DeployableObject;
import javax.enterprise.deploy.shared.ModuleType;
import javax.enterprise.deploy.spi.DeploymentConfiguration;
import javax.enterprise.deploy.spi.exceptions.InvalidModuleException;
import javax.management.ObjectName;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.DeploymentModule;
import org.apache.geronimo.deployment.plugin.factories.DeploymentConfigurationFactory;
import org.apache.geronimo.gbean.GAttributeInfo;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoFactory;
import org.apache.geronimo.gbean.GConstructorInfo;
import org.apache.xmlbeans.XmlException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/02/03 06:51:21 $
*
* */
public abstract class AbstractRARConfigurationFactory implements DeploymentConfigurationFactory {
private final ObjectName connectionTrackerNamePattern;
public static final GBeanInfo GBEAN_INFO;
public AbstractRARConfigurationFactory(ObjectName connectionTrackerNamePattern) {
this.connectionTrackerNamePattern = connectionTrackerNamePattern;
}
public ObjectName getConnectionTrackerNamePattern() {
return connectionTrackerNamePattern;
}
public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException {
if (!ModuleType.RAR.equals(deployable.getType())) {
throw new InvalidModuleException("DeployableObject must be a RAR");
}
return new RARConfiguration(deployable);
}
public DeploymentModule createModule(InputStream moduleArchive, Document deploymentPlan, URI configID) throws DeploymentException {
return null;
}
public DeploymentModule createModule(File moduleArchive, Document deploymentPlan, URI configID, boolean isLocal) throws DeploymentException {
return null;
}
public abstract DeploymentModule createModule(InputStream moduleArchive, Object geronimoDD, URI configID, boolean isLocal) throws DeploymentException, XmlException, IOException;
static {
GBeanInfoFactory infoFactory = new GBeanInfoFactory("Geronimo RAR Configuration Factory", AbstractRARConfigurationFactory.class.getName());
infoFactory.addInterface(DeploymentConfigurationFactory.class);
infoFactory.addAttribute(new GAttributeInfo("ConnectionTrackerNamePattern", true));
infoFactory.setConstructor(new GConstructorInfo(
new String[]{"ConnectionTrackerNamePattern"},
new Class[]{ObjectName.class}));
GBEAN_INFO = infoFactory.getBeanInfo();
}
}
1.1 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/RAR_1_0ConfigurationFactory.java
Index: RAR_1_0ConfigurationFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.connector.deployment;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import javax.management.ObjectName;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.DeploymentModule;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoFactory;
import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
import org.apache.xmlbeans.XmlException;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/02/03 06:51:21 $
*
* */
public class RAR_1_0ConfigurationFactory extends AbstractRARConfigurationFactory {
public static final GBeanInfo GBEAN_INFO;
public RAR_1_0ConfigurationFactory(ObjectName connectionTrackerNamePattern) {
super(connectionTrackerNamePattern);
}
public DeploymentModule createModule(InputStream moduleArchive, Object geronimoDD, URI configID, boolean isLocal) throws DeploymentException, XmlException, IOException {
GerConnectorDocument geronimoConnectorDocument = (GerConnectorDocument) geronimoDD;
return new Connector_1_0Module(configID, moduleArchive, geronimoConnectorDocument, getConnectionTrackerNamePattern());
}
static {
GBeanInfoFactory infoFactory = new GBeanInfoFactory(RAR_1_0ConfigurationFactory.class.getName(), AbstractRARConfigurationFactory.GBEAN_INFO);
GBEAN_INFO = infoFactory.getBeanInfo();
}
public static GBeanInfo getGBeanInfo() {
return RAR_1_0ConfigurationFactory.GBEAN_INFO;
}
}
1.1 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/RAR_1_5ConfigurationFactory.java
Index: RAR_1_5ConfigurationFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.connector.deployment;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import javax.management.ObjectName;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.DeploymentModule;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoFactory;
import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
import org.apache.xmlbeans.XmlException;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/02/03 06:51:21 $
*
* */
public class RAR_1_5ConfigurationFactory extends AbstractRARConfigurationFactory {
public static final GBeanInfo GBEAN_INFO;
public RAR_1_5ConfigurationFactory(ObjectName connectionTrackerNamePattern) {
super(connectionTrackerNamePattern);
}
public DeploymentModule createModule(InputStream moduleArchive, Object geronimoDD, URI configID, boolean isLocal) throws DeploymentException, XmlException, IOException {
GerConnectorDocument geronimoConnectorDocument = (GerConnectorDocument) geronimoDD;
return new Connector_1_5Module(configID, moduleArchive, geronimoConnectorDocument, getConnectionTrackerNamePattern());
}
static {
GBeanInfoFactory infoFactory = new GBeanInfoFactory(RAR_1_5ConfigurationFactory.class.getName(), AbstractRARConfigurationFactory.GBEAN_INFO);
GBEAN_INFO = infoFactory.getBeanInfo();
}
public static GBeanInfo getGBeanInfo() {
return RAR_1_5ConfigurationFactory.GBEAN_INFO;
}
}
1.2 +22 -4 incubator-geronimo/modules/connector/src/test/org/apache/geronimo/connector/deployment/Connector_1_0Test.java
Index: Connector_1_0Test.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/connector/src/test/org/apache/geronimo/connector/deployment/Connector_1_0Test.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Connector_1_0Test.java 2 Feb 2004 22:10:35 -0000 1.1
+++ Connector_1_0Test.java 3 Feb 2004 06:51:21 -0000 1.2
@@ -60,9 +60,13 @@
import java.net.URI;
import java.util.Map;
import java.util.HashMap;
+import java.util.zip.ZipEntry;
+import java.util.jar.JarOutputStream;
import java.io.InputStream;
import java.io.File;
import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
import javax.management.ObjectName;
@@ -82,7 +86,6 @@
public class Connector_1_0Test extends TestCase implements ConfigurationCallback {
private URL j2eeDD;
private URL geronimoDD;
- private URL moduleArchive = null;
private URI configID = URI.create("geronimo/connector10/test");
private Map gbeans = new HashMap();
@@ -99,10 +102,25 @@
}
public void testCreateConnector_1_0Module() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ JarOutputStream jarOutputStream = new JarOutputStream(baos);
+ ZipEntry entry = new ZipEntry("META-INF/ra.xml");
+ jarOutputStream.putNextEntry(entry);
+
InputStream j2eeInputStream = j2eeDD.openStream();
+ byte[] buffer = new byte[1024];
+ for (int length; (length = j2eeInputStream.read(buffer)) > 0; ) {
+ jarOutputStream.write(buffer, 0, length);
+ }
+ jarOutputStream.flush();
+ jarOutputStream.closeEntry();
+ jarOutputStream.close();
+
+ InputStream moduleArchive = new ByteArrayInputStream(baos.toByteArray());
InputStream geronimoInputStream = geronimoDD.openStream();
- RARConfigurationFactory rarConfigurationFactory = new RARConfigurationFactory(ObjectName.getInstance("geronimo.test:role=ConnectionTracker"));
- DeploymentModule connector_1_0Module = rarConfigurationFactory.createModule(moduleArchive, j2eeInputStream, geronimoInputStream, configID, true);
+ GerConnectorDocument connectorDocument = GerConnectorDocument.Factory.parse(geronimoInputStream);
+ RAR_1_0ConfigurationFactory rarConfigurationFactory = new RAR_1_0ConfigurationFactory(ObjectName.getInstance("geronimo.test:role=ConnectionTracker"));
+ DeploymentModule connector_1_0Module = rarConfigurationFactory.createModule(moduleArchive, connectorDocument, configID, true);
connector_1_0Module.init();
connector_1_0Module.generateClassPath(this);
connector_1_0Module.defineGBeans(this, this.getClass().getClassLoader());
1.2 +22 -4 incubator-geronimo/modules/connector/src/test/org/apache/geronimo/connector/deployment/Connector_1_5Test.java
Index: Connector_1_5Test.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/connector/src/test/org/apache/geronimo/connector/deployment/Connector_1_5Test.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Connector_1_5Test.java 2 Feb 2004 22:10:35 -0000 1.1
+++ Connector_1_5Test.java 3 Feb 2004 06:51:21 -0000 1.2
@@ -59,10 +59,14 @@
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
import java.net.URL;
import java.net.URI;
import java.util.Map;
import java.util.HashMap;
+import java.util.zip.ZipEntry;
+import java.util.jar.JarOutputStream;
import javax.management.ObjectName;
@@ -82,7 +86,6 @@
public class Connector_1_5Test extends TestCase implements ConfigurationCallback {
private URL j2eeDD;
private URL geronimoDD;
- private URL moduleArchive = null;
private URI configID = URI.create("geronimo/connector15/test");
private Map gbeans = new HashMap();
@@ -99,10 +102,25 @@
}
public void testCreateConnector_1_5Module() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ JarOutputStream jarOutputStream = new JarOutputStream(baos);
+ ZipEntry entry = new ZipEntry("META-INF/ra.xml");
+ jarOutputStream.putNextEntry(entry);
+
InputStream j2eeInputStream = j2eeDD.openStream();
+ byte[] buffer = new byte[1024];
+ for (int length; (length = j2eeInputStream.read(buffer)) > 0; ) {
+ jarOutputStream.write(buffer, 0, length);
+ }
+ jarOutputStream.flush();
+ jarOutputStream.closeEntry();
+ jarOutputStream.close();
+
+ InputStream moduleArchive = new ByteArrayInputStream(baos.toByteArray());
InputStream geronimoInputStream = geronimoDD.openStream();
- RARConfigurationFactory rarConfigurationFactory = new RARConfigurationFactory(ObjectName.getInstance("geronimo.test:role=ConnectionTracker"));
- DeploymentModule connector_1_5Module = rarConfigurationFactory.createModule(moduleArchive, j2eeInputStream, geronimoInputStream, configID, true);
+ GerConnectorDocument connectorDocument = GerConnectorDocument.Factory.parse(geronimoInputStream);
+ RAR_1_5ConfigurationFactory rarConfigurationFactory = new RAR_1_5ConfigurationFactory(ObjectName.getInstance("geronimo.test:role=ConnectionTracker"));
+ DeploymentModule connector_1_5Module = rarConfigurationFactory.createModule(moduleArchive, connectorDocument, configID, true);
connector_1_5Module.init();
connector_1_5Module.generateClassPath(this);
connector_1_5Module.defineGBeans(this, this.getClass().getClassLoader());
1.1 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/util/UnclosableInputStream.java
Index: UnclosableInputStream.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.deployment.util;
import java.io.InputStream;
import java.io.IOException;
/**
* This class is a workaround for XMLBeans unfortunate habit of closing streams it reads from
* combined with JarInputStreams insistence that you cant do that.
*
* @version $Revision: 1.1 $ $Date: 2004/02/03 06:51:21 $
*
* */
public class UnclosableInputStream extends InputStream {
private final InputStream delegate;
public UnclosableInputStream(InputStream delegate) {
this.delegate = delegate;
}
public void close() {
}
public int available() throws IOException {
return delegate.available();
}
public void mark(int readLimit) {
delegate.mark(readLimit);
}
public boolean markSupported() {
return delegate.markSupported();
}
public int read() throws IOException {
return delegate.read();
}
public int read(byte[] buffer) throws IOException {
return delegate.read(buffer);
}
public int read(byte[] buffer, int offset, int length) throws IOException {
return delegate.read(buffer, offset, length);
}
public void reset() throws IOException {
delegate.reset();
}
public long skip(long n) throws IOException {
return delegate.skip(n);
}
}