You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2006/01/21 05:24:31 UTC
svn commit: r370976 [1/2] - in /geronimo/branches/1.0/modules:
connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/
connector-builder/src/test-resources/
connector-builder/src/test/org/apache/geronimo/connector/deployment/jsr88/
n...
Author: ammulder
Date: Fri Jan 20 20:22:22 2006
New Revision: 370976
URL: http://svn.apache.org/viewcvs?rev=370976&view=rev
Log:
More complete tests for connector builder DConfigBeans
Fix a couple bugs and add missing beans
Fixes GERONIMO-1510 and contributes to GERONIMO-1137
Added:
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectDCB.java (with props)
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectInstance.java (with props)
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigHolder.java (with props)
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapterInstance.java (with props)
geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms-plan.xml (with props)
geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms.rar (with props)
geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/
geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/GBeanLocator.java (with props)
geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/ObjectNameGroup.java (with props)
Modified:
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigPropertySetting.java
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionDefinitionInstance.java
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionManager.java
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBRoot.java
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectorDCB.java
geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapter.java
geronimo/branches/1.0/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBTest.java
Added: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectDCB.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectDCB.java?rev=370976&view=auto
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectDCB.java (added)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectDCB.java Fri Jan 20 20:22:22 2006
@@ -0,0 +1,116 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.geronimo.connector.deployment.jsr88;
+
+import org.apache.geronimo.deployment.plugin.DConfigBeanSupport;
+import org.apache.geronimo.xbeans.geronimo.GerAdminobjectType;
+import org.apache.geronimo.xbeans.geronimo.GerAdminobjectInstanceType;
+import org.apache.xmlbeans.SchemaTypeLoader;
+
+import javax.enterprise.deploy.model.DDBean;
+
+/**
+ * Represents /connector/adminobject in a Geronimo Connector deployment plan.
+ * Corresponds to /connector/resourceadapter/adminobject in the J2EE deployment plan.
+ * Note that in an arbitrary Geronimo connector plan, there can be multiple
+ * adminobject entries per adminobject from the J2EE plan. When we load such
+ * a plan, we combine all the adminobject-instances from those adminobjects
+ * into a single Geronimo adminobject per J2EE adminobject, so if we write it
+ * out again it'll be a little different, but that way this can be a DConfigBean
+ * instead of a POJO (the loading code is in ConnectorDCB).
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public class AdminObjectDCB extends DConfigBeanSupport {
+ private AdminObjectInstance[] adminObjectInstance = new AdminObjectInstance[0];
+
+ public AdminObjectDCB(DDBean adminobjectDDBean, final GerAdminobjectType adminobject) {
+ super(adminobjectDDBean, adminobject);
+ //todo: listen for property changes on the admin object
+ configure(adminobjectDDBean, adminobject);
+ }
+
+ private void configure(DDBean adminDDBean, GerAdminobjectType adminXml) {
+ adminXml.setAdminobjectClass(adminDDBean.getText("adminobject-class")[0]);
+ adminXml.setAdminobjectInterface(adminDDBean.getText("adminobject-interface")[0]);
+ GerAdminobjectInstanceType[] xmls = adminXml.getAdminobjectInstanceArray();
+ adminObjectInstance = new AdminObjectInstance[xmls.length];
+ for (int i = 0; i < xmls.length; i++) {
+ adminObjectInstance[i] = new AdminObjectInstance(adminDDBean, xmls[i]);
+ }
+ }
+
+ GerAdminobjectType getAdminObject() {
+ return (GerAdminobjectType) getXmlObject();
+ }
+
+ void addAdminObjectInstance(GerAdminobjectInstanceType xml) {
+ AdminObjectInstance instance = new AdminObjectInstance(getDDBean(), xml);
+ AdminObjectInstance[] result = new AdminObjectInstance[adminObjectInstance.length+1];
+ System.arraycopy(adminObjectInstance, 0, result, 0, adminObjectInstance.length);
+ result[adminObjectInstance.length] = instance;
+ setAdminObjectInstance(result);
+ }
+
+ // ----------------------- JavaBean Properties for /adminobject ----------------------
+
+ public String getAdminObjectInterface() {
+ return getAdminObject().getAdminobjectInterface();
+ }
+
+ public String getAdminObjectClass() {
+ return getAdminObject().getAdminobjectClass();
+ }
+
+ public AdminObjectInstance[] getAdminObjectInstance() {
+ return adminObjectInstance;
+ }
+
+ public void setAdminObjectInstance(AdminObjectInstance[] adminObjectInstance) {
+ AdminObjectInstance[] old = getAdminObjectInstance();
+ //todo: whack all the old ones
+ for (int i = 0; i < adminObjectInstance.length; i++) {
+ AdminObjectInstance instance = adminObjectInstance[i];
+ if(instance.getAdminInstance() == null) {
+ instance.configure(getDDBean(), getAdminObject().addNewAdminobjectInstance());
+ }
+ }
+ this.adminObjectInstance = adminObjectInstance;
+ pcs.firePropertyChange("adminObjectInstance", old, adminObjectInstance);
+ }
+
+ public AdminObjectInstance getAdminObjectInstance(int index) {
+ return adminObjectInstance[index];
+ }
+
+ public void setAdminObjectInstance(int index, AdminObjectInstance adminObjectInstance) {
+ AdminObjectInstance[] old = getAdminObjectInstance();
+ //todo: whack the old one
+ if(adminObjectInstance.getAdminInstance() == null) {
+ adminObjectInstance.configure(getDDBean(), getAdminObject().addNewAdminobjectInstance());
+ }
+ this.adminObjectInstance[index] = adminObjectInstance;
+ //todo: deep copy of array for "old"
+ pcs.firePropertyChange("adminObjectInstance", old, adminObjectInstance);
+ }
+
+ // ----------------------- End of JavaBean Properties ----------------------
+
+ protected SchemaTypeLoader getSchemaTypeLoader() {
+ return Connector15DCBRoot.SCHEMA_TYPE_LOADER;
+ }
+}
Propchange: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectDCB.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectInstance.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectInstance.java?rev=370976&view=auto
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectInstance.java (added)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectInstance.java Fri Jan 20 20:22:22 2006
@@ -0,0 +1,82 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.geronimo.connector.deployment.jsr88;
+
+import org.apache.geronimo.xbeans.geronimo.GerAdminobjectInstanceType;
+import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
+import org.apache.xmlbeans.SchemaTypeLoader;
+import javax.enterprise.deploy.model.DDBean;
+
+/**
+ * Represents /connector/adminobject/adminobject-instance in the
+ * Geronimo Connector deployment plan.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public class AdminObjectInstance extends ConfigHolder {
+ private DDBean adminObject;
+
+ public AdminObjectInstance() {
+ }
+
+ public AdminObjectInstance(DDBean adminObject, GerAdminobjectInstanceType instance) {
+ configure(adminObject, instance);
+ }
+
+ protected GerAdminobjectInstanceType getAdminInstance() {
+ return (GerAdminobjectInstanceType) getXmlObject();
+ }
+
+ public void reconfigure() {
+ configure(adminObject, getAdminInstance());
+ }
+
+ void configure(DDBean adminObject, GerAdminobjectInstanceType definition) {
+ this.adminObject = adminObject;
+ super.configure(adminObject, definition);
+ }
+
+ protected GerConfigPropertySettingType createConfigProperty() {
+ return getAdminInstance().addNewConfigPropertySetting();
+ }
+
+ protected GerConfigPropertySettingType[] getConfigProperties() {
+ return getAdminInstance().getConfigPropertySettingArray();
+ }
+
+ protected void removeConfigProperty(int index) {
+ getAdminInstance().removeConfigPropertySetting(index);
+ }
+
+ // ----------------------- JavaBean Properties for /adminobject-instance ----------------------
+
+ public String getMessageDestinationName() {
+ return getAdminInstance().getMessageDestinationName();
+ }
+
+ public void setMessageDestinationName(String name) {
+ String old = getMessageDestinationName();
+ getAdminInstance().setMessageDestinationName(name);
+ pcs.firePropertyChange("messageDestinationName", old, name);
+ }
+
+ // ----------------------- End of JavaBean Properties ----------------------
+
+ protected SchemaTypeLoader getSchemaTypeLoader() {
+ return Connector15DCBRoot.SCHEMA_TYPE_LOADER;
+ }
+}
Propchange: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/AdminObjectInstance.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigHolder.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigHolder.java?rev=370976&view=auto
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigHolder.java (added)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigHolder.java Fri Jan 20 20:22:22 2006
@@ -0,0 +1,144 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.geronimo.connector.deployment.jsr88;
+
+import org.apache.geronimo.deployment.plugin.XmlBeanSupport;
+import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
+import org.apache.xmlbeans.XmlObject;
+
+import javax.enterprise.deploy.model.XpathListener;
+import javax.enterprise.deploy.model.XpathEvent;
+import javax.enterprise.deploy.model.DDBean;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * Base class for beans that hold an array of config property settings.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public abstract class ConfigHolder extends XmlBeanSupport {
+ final XpathListener xpathListener = new XpathListener() {
+ public void fireXpathEvent(XpathEvent event) {
+ if(event.isAddEvent()) {
+ //todo: add new config-property-setting, fire change event
+ } else if(event.isRemoveEvent()) {
+ //todo: remove config-property-setting, fire change event
+ } else if(event.isChangeEvent()) {
+ if(event.getChangeEvent().getPropertyName().equals("config-property-name")) {
+ String old = (String) event.getChangeEvent().getOldValue();
+ for (int i = 0; i < settings.length; i++) {
+ ConfigPropertySetting setting = settings[i];
+ if(setting.getName().equals(old)) {
+ setting.setName((String) event.getChangeEvent().getNewValue());
+ break;
+ }
+ }
+ }
+ }
+ }
+ };
+ private DDBean ddBean;
+ private ConfigPropertySetting[] settings = new ConfigPropertySetting[0];
+
+ public ConfigHolder() {
+ super(null);
+ }
+
+ public void clearNullSettings() {
+ List list = new ArrayList();
+ Set saved = new HashSet();
+ for (int i = 0; i < settings.length; i++) {
+ ConfigPropertySetting setting = settings[i];
+ if(setting.getValue() != null && !setting.isSetToDefault()) {
+ list.add(setting);
+ saved.add(setting.getName());
+ }
+ }
+ settings = (ConfigPropertySetting[]) list.toArray(new ConfigPropertySetting[list.size()]);
+ GerConfigPropertySettingType[] configs = getConfigProperties();
+ for (int i = configs.length-1; i>=0; --i) {
+ GerConfigPropertySettingType type = configs[i];
+ if(!saved.contains(type.getName())) {
+ removeConfigProperty(i);
+ }
+ }
+ }
+
+ protected void configure(DDBean ddBean, XmlObject xml) {
+ ConfigPropertySetting[] old = null;
+ if(this.ddBean != null) {
+ this.ddBean.removeXpathListener("config-property", xpathListener);
+ old = settings;
+ }
+ this.ddBean = ddBean;
+ setXmlObject(xml);
+
+ // Prepare the ConfigPropertySetting array
+ List list = new ArrayList();
+ DDBean[] all = ddBean == null ? new DDBean[0] : ddBean.getChildBean("config-property");
+ if(all == null) {
+ all = new DDBean[0];
+ }
+ Map byName = new HashMap();
+ for (int i = 0; i < all.length; i++) {
+ DDBean item = all[i];
+ byName.put(item.getText("config-property-name")[0], item);
+ }
+ GerConfigPropertySettingType[] previous = getConfigProperties();
+ for (int i = 0; i < previous.length; i++) {
+ GerConfigPropertySettingType setting = previous[i];
+ DDBean item = (DDBean) byName.remove(setting.getName());
+ if(item != null) {
+ list.add(new ConfigPropertySetting(item, setting, false));
+ } else {
+ System.out.println("Ignoring connectiondefinition-instance/config-setting "+setting.getName()+" (no matching config-property in J2EE DD)");
+ //todo: delete it from the XMLBeans tree
+ }
+ }
+ for (Iterator it = byName.keySet().iterator(); it.hasNext();) {
+ String name = (String) it.next();
+ DDBean bean = (DDBean) byName.get(name);
+ list.add(new ConfigPropertySetting(bean, createConfigProperty(), true));
+ }
+ settings = (ConfigPropertySetting[]) list.toArray(new ConfigPropertySetting[list.size()]);
+ if(old != null) {
+ pcs.firePropertyChange("configPropertySetting", old, settings);
+ }
+ if(ddBean != null) {
+ ddBean.addXpathListener("config-property", xpathListener);
+ }
+ }
+
+ public ConfigPropertySetting[] getConfigPropertySetting() {
+ return settings;
+ }
+
+ public ConfigPropertySetting getConfigPropertySetting(int index) {
+ return settings[index];
+ }
+
+ protected abstract GerConfigPropertySettingType createConfigProperty();
+ protected abstract GerConfigPropertySettingType[] getConfigProperties();
+ protected abstract void removeConfigProperty(int index);
+ public abstract void reconfigure();
+}
Propchange: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigHolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigPropertySetting.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigPropertySetting.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigPropertySetting.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConfigPropertySetting.java Fri Jan 20 20:22:22 2006
@@ -31,6 +31,7 @@
*/
public class ConfigPropertySetting extends XmlBeanSupport {
private DDBean configProperty;
+ private String defaultValue;
public ConfigPropertySetting() {
super(null);
@@ -54,14 +55,21 @@
setXmlObject(property);
final String name = configProperty.getText("config-property-name")[0];
getPropertySetting().setName(name);
+ String[] test = configProperty.getText("config-property-value");
+ if(test != null && test.length == 1) {
+ defaultValue = test[0];
+ } else {
+ defaultValue = null;
+ }
if(setDefault) {
- String[] test = configProperty.getText("config-property-value");
- if(test != null && test.length == 1) {
- getPropertySetting().setStringValue(test[0]);
- } else {
- getPropertySetting().setStringValue(null);
- }
+ getPropertySetting().setStringValue(defaultValue);
}
+ }
+
+ boolean isSetToDefault() {
+ String value = getValue();
+ return (defaultValue == null && value == null) ||
+ (defaultValue != null && value != null && defaultValue.equals(value));
}
// ----------------------- JavaBean Properties for config-property-setting ----------------------
Modified: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionDefinitionInstance.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionDefinitionInstance.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionDefinitionInstance.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionDefinitionInstance.java Fri Jan 20 20:22:22 2006
@@ -16,17 +16,10 @@
*/
package org.apache.geronimo.connector.deployment.jsr88;
-import java.util.Iterator;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
import javax.enterprise.deploy.model.DDBean;
-import javax.enterprise.deploy.model.XpathListener;
-import javax.enterprise.deploy.model.XpathEvent;
-import org.apache.geronimo.deployment.plugin.XmlBeanSupport;
import org.apache.geronimo.xbeans.geronimo.GerConnectiondefinitionInstanceType;
import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
+import org.apache.geronimo.naming.deployment.jsr88.GBeanLocator;
import org.apache.xmlbeans.SchemaTypeLoader;
/**
@@ -35,37 +28,14 @@
*
* @version $Rev$ $Date$
*/
-public class ConnectionDefinitionInstance extends XmlBeanSupport {
- final XpathListener xpathListener = new XpathListener() {
- public void fireXpathEvent(XpathEvent event) {
- if(event.isAddEvent()) {
- //todo: add new config-property-setting, fire change event
- } else if(event.isRemoveEvent()) {
- //todo: remove config-property-setting, fire change event
- } else if(event.isChangeEvent()) {
- if(event.getChangeEvent().getPropertyName().equals("config-property-name")) {
- String old = (String) event.getChangeEvent().getOldValue();
- for (int i = 0; i < settings.length; i++) {
- ConfigPropertySetting setting = settings[i];
- if(setting.getName().equals(old)) {
- setting.setName((String) event.getChangeEvent().getNewValue());
- break;
- }
- }
- }
- }
- }
- };
+public class ConnectionDefinitionInstance extends ConfigHolder {
private DDBean connectionDefinition;
- private ConfigPropertySetting[] settings = new ConfigPropertySetting[0];
private ConnectionManager manager;
public ConnectionDefinitionInstance() {
- super(null);
}
public ConnectionDefinitionInstance(DDBean connectionDefinition, GerConnectiondefinitionInstanceType instance) {
- super(null);
configure(connectionDefinition, instance);
}
@@ -73,68 +43,13 @@
return (GerConnectiondefinitionInstanceType) getXmlObject();
}
- void clearNullSettings() {
- List list = new ArrayList();
- for (int i = 0; i < settings.length; i++) {
- ConfigPropertySetting setting = settings[i];
- if(setting.getValue() != null) {
- list.add(setting);
- }
- }
- settings = (ConfigPropertySetting[]) list.toArray(new ConfigPropertySetting[list.size()]);
- GerConnectiondefinitionInstanceType instance = getConnectionInstance();
- for (int i = instance.getConfigPropertySettingArray().length-1; i>=0; --i) {
- GerConfigPropertySettingType type = instance.getConfigPropertySettingArray(i);
- if(type.isNil() || type.getStringValue() == null) {
- instance.removeConfigPropertySetting(i);
- }
- }
- }
-
- void reconfigure() {
+ public void reconfigure() {
configure(connectionDefinition, getConnectionInstance());
}
void configure(DDBean connectionDefinition, GerConnectiondefinitionInstanceType definition) {
- ConfigPropertySetting[] old = null;
- if(this.connectionDefinition != null) {
- this.connectionDefinition.removeXpathListener("config-property", xpathListener);
- old = settings;
- }
this.connectionDefinition = connectionDefinition;
- setXmlObject(definition);
-
- // Prepare the ConfigPropertySetting array
- List list = new ArrayList();
- DDBean[] all = connectionDefinition == null ? new DDBean[0] : connectionDefinition.getChildBean("config-property");
- Map byName = new HashMap();
- for (int i = 0; i < all.length; i++) {
- DDBean ddBean = all[i];
- byName.put(ddBean.getText("config-property-name")[0], ddBean);
- }
- GerConfigPropertySettingType[] previous = definition.getConfigPropertySettingArray();
- for (int i = 0; i < previous.length; i++) {
- GerConfigPropertySettingType setting = previous[i];
- DDBean ddBean = (DDBean) byName.remove(setting.getName());
- if(ddBean != null) {
- list.add(new ConfigPropertySetting(ddBean, setting, false));
- } else {
- System.out.println("Ignoring connectiondefinition-instance/config-setting "+setting.getName()+" (no matching config-property in J2EE DD)");
- //todo: delete it from the XMLBeans tree
- }
- }
- for (Iterator it = byName.keySet().iterator(); it.hasNext();) {
- String name = (String) it.next();
- DDBean bean = (DDBean) byName.get(name);
- list.add(new ConfigPropertySetting(bean, getConnectionInstance().addNewConfigPropertySetting(), true));
- }
- settings = (ConfigPropertySetting[]) list.toArray(new ConfigPropertySetting[list.size()]);
- if(old != null) {
- pcs.firePropertyChange("configPropertySetting", old, settings);
- }
- if(connectionDefinition != null) {
- connectionDefinition.addXpathListener("config-property", xpathListener);
- }
+ super.configure(connectionDefinition, definition);
if(connectionDefinition != null) {
DDBean parent = connectionDefinition.getChildBean("..")[0];
ConnectionManager oldMgr = manager;
@@ -159,6 +74,18 @@
return connectionDefinition;
}
+ protected GerConfigPropertySettingType createConfigProperty() {
+ return getConnectionInstance().addNewConfigPropertySetting();
+ }
+
+ protected GerConfigPropertySettingType[] getConfigProperties() {
+ return getConnectionInstance().getConfigPropertySettingArray();
+ }
+
+ protected void removeConfigProperty(int index) {
+ getConnectionInstance().removeConfigPropertySetting(index);
+ }
+
// ----------------------- JavaBean Properties for /connectiondefinition-instance ----------------------
public String getName() {
@@ -191,18 +118,9 @@
pcs.firePropertyChange("implementedInterface", old, getImplementedInterface());
}
- public ConfigPropertySetting[] getConfigPropertySetting() {
- return settings;
- }
-
- public ConfigPropertySetting getConfigPropertySetting(int index) {
- return settings[index];
- }
-
public ConnectionManager getConnectionManager() {
return manager;
}
-
// ----------------------- End of JavaBean Properties ----------------------
Modified: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionManager.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionManager.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectionManager.java Fri Jan 20 20:22:22 2006
@@ -53,8 +53,9 @@
manager.addNewNoTransaction();
} else if(tx.equalsIgnoreCase("LocalTransaction")) {
manager.addNewLocalTransaction();
- } else if(tx.equalsIgnoreCase("XATranasaction")) {
+ } else if(tx.equalsIgnoreCase("XATransaction")) {
manager.addNewXaTransaction();
+ manager.getXaTransaction().addNewTransactionCaching();
}
}
}
@@ -203,7 +204,7 @@
}
public boolean isTransactionXACachingThread() {
- return isTransactionXA() && getManager().getXaTransaction().isSetTransactionCaching();
+ return isTransactionXA() && getManager().getXaTransaction().isSetThreadCaching();
}
public void setTransactionXACachingThread(boolean set) {
Modified: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBRoot.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBRoot.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBRoot.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBRoot.java Fri Jan 20 20:22:22 2006
@@ -137,10 +137,8 @@
} finally {
for (int i = 0; i < parents.size(); i++) {
Object parent = parents.get(i);
- if(parent instanceof ConnectionDefinitionInstance) {
- ConnectionDefinitionInstance instance = (ConnectionDefinitionInstance) parent;
- instance.reconfigure();
- } //todo: else if instanceof ResourceAdapterInstance, else if instanceof AdminObjectInstance
+ ConfigHolder instance = (ConfigHolder) parent;
+ instance.reconfigure();
}
}
}
@@ -149,7 +147,10 @@
ResourceAdapter[] adapters = connector.getResourceAdapter();
for (int i = 0; i < adapters.length; i++) {
ResourceAdapter adapter = adapters[i];
- // todo: check resource adapter instances
+ if(adapter.getResourceAdapterInstance() != null) {
+ parents.add(adapter.getResourceAdapterInstance());
+ adapter.getResourceAdapterInstance().clearNullSettings();
+ }
ConnectionDefinition defs[] = adapter.getConnectionDefinition();
for (int j = 0; j < defs.length; j++) {
ConnectionDefinition def = defs[j];
@@ -161,6 +162,21 @@
}
}
}
- //todo: check admin object instances
+ try {
+ DDBean[] adminDDBs = connector.getDDBean().getChildBean(connector.getXpaths()[0]);
+ if(adminDDBs == null) adminDDBs = new DDBean[0];
+ for (int i = 0; i < adminDDBs.length; i++) {
+ DDBean ddb = adminDDBs[i];
+ AdminObjectDCB dcb = (AdminObjectDCB) connector.getDConfigBean(ddb);
+ AdminObjectInstance[] instances = dcb.getAdminObjectInstance();
+ for (int j = 0; j < instances.length; j++) {
+ AdminObjectInstance instance = instances[j];
+ parents.add(instance);
+ instance.clearNullSettings();
+ }
+ }
+ } catch (ConfigurationException e) {
+ e.printStackTrace();
+ }
}
}
Modified: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectorDCB.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectorDCB.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectorDCB.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ConnectorDCB.java Fri Jan 20 20:22:22 2006
@@ -19,14 +19,26 @@
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.LinkedHashMap;
+import java.util.Arrays;
+import java.util.Collections;
import javax.enterprise.deploy.model.DDBean;
import javax.enterprise.deploy.model.XpathListener;
import javax.enterprise.deploy.model.XpathEvent;
+import javax.enterprise.deploy.spi.DConfigBean;
+import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
+
import org.apache.geronimo.deployment.plugin.DConfigBeanSupport;
import org.apache.geronimo.deployment.xbeans.DependencyType;
import org.apache.geronimo.xbeans.geronimo.GerConnectorType;
import org.apache.geronimo.xbeans.geronimo.GerResourceadapterType;
+import org.apache.geronimo.xbeans.geronimo.GerAdminobjectType;
+import org.apache.geronimo.xbeans.geronimo.GerAdminobjectInstanceType;
import org.apache.xmlbeans.SchemaTypeLoader;
+import org.apache.xmlbeans.XmlCursor;
/**
* Represents /connector in a Geronimo Connector deployment plan.
@@ -38,6 +50,7 @@
private DDBean resourceAdapterDDBean;
private ResourceAdapter[] resourceAdapter = new ResourceAdapter[0];
private Dependency[] dependency = new Dependency[0];
+ private AdminObjectDCB[] adminobjects = new AdminObjectDCB[0];
public ConnectorDCB(DDBean connectorDDBean, final GerConnectorType connector) {
super(connectorDDBean, connector);
@@ -62,6 +75,33 @@
});
}
+ public String[] getXpaths() {
+ return getXPathsForJ2ee_1_4(new String[][]{{"resourceadapter","adminobject",},});
+ }
+
+ public DConfigBean getDConfigBean(DDBean bean) throws ConfigurationException {
+ if (getXpaths()[0].equals(bean.getXpath())) { // "adminobject"
+ String aoInterface = bean.getText("adminobject-interface")[0];
+ String aoClass = bean.getText("adminobject-class")[0];
+ // Check whether we've seen this one before
+ for(int i=0; i<adminobjects.length; i++) {
+ if(adminobjects[i].getAdminObjectClass().equals(aoClass) &&
+ adminobjects[i].getAdminObjectInterface().equals(aoInterface)) {
+ return adminobjects[i];
+ }
+ }
+ // Haven't seen it; create a new DConfigBean
+ GerAdminobjectType ao = getConnector().addNewAdminobject();
+ AdminObjectDCB dcb = new AdminObjectDCB(bean, ao);
+ AdminObjectDCB[] list = new AdminObjectDCB[adminobjects.length+1];
+ System.arraycopy(adminobjects, 0, list, 0, adminobjects.length);
+ list[adminobjects.length] = dcb;
+ return dcb;
+ } else {
+ throw new ConfigurationException("No DConfigBean matching DDBean "+bean.getXpath());
+ }
+ }
+
private void loadExistingData(GerConnectorType connector) {
//todo: Handle the import children
//todo: Handle the hidden-classes children
@@ -89,7 +129,78 @@
resourceAdapter[i] = new ResourceAdapter(resourceAdapterDDBean, adapter);
}
}
- //todo: Handle the AdminObject children
+ // Handle the AdminObject children
+ GerAdminobjectType[] admins = connector.getAdminobjectArray();
+ DDBean[] data = getDDBean().getChildBean(getXpaths()[0]);
+ List ddBeans = data == null ? Collections.EMPTY_LIST : new ArrayList(Arrays.asList(data)); // resourceadapter/adminobject
+
+ Map dcbs = new LinkedHashMap();
+ if(admins == null) {
+ adminobjects = new AdminObjectDCB[0];
+ } else {
+ // Match up each Geronimo adminobject with a ra.xml adminobject and create DConfigBeans accordingly
+ for (int i = 0; i < admins.length; i++) {
+ GerAdminobjectType admin = admins[i];
+ String aoClass = admin.getAdminobjectClass();
+ String aoIface = admin.getAdminobjectInterface();
+ AdminObjectDCB dcb = (AdminObjectDCB) dcbs.get("class "+aoClass+" iface "+aoIface);
+ if(dcb != null) {
+ // this is a second Geronimo adminobject block of the same type; there will not be a matching DDBean any more
+ // merge the adminobject-instance entries instead!!!
+ if(admin.getAdminobjectInstanceArray().length > 0) {
+ GerAdminobjectType old = dcb.getAdminObject();
+ GerAdminobjectInstanceType[] array = admin.getAdminobjectInstanceArray();
+ int oldCount = dcb.getAdminObjectInstance().length;
+ for (int j = 0; j < array.length; j++) {
+ GerAdminobjectInstanceType instance = array[j];
+ XmlCursor source = instance.newCursor();
+ XmlCursor dest = old.newCursor();
+ dest.toEndToken();
+ if(!source.moveXml(dest)) {
+ throw new RuntimeException("Unable to move admin object instance");
+ }
+ source.dispose();
+ dest.dispose();
+ dcb.addAdminObjectInstance(old.getAdminobjectInstanceArray(oldCount+j));
+ }
+ }
+ continue;
+ }
+ DDBean target = null;
+ for (int j = 0; j < ddBeans.size(); j++) {
+ DDBean ddBean = (DDBean) ddBeans.get(j);
+ String ddClass = ddBean.getText("adminobject-class")[0];
+ String ddIface = ddBean.getText("adminobject-interface")[0];
+ if(ddClass.equals(aoClass) && ddIface.equals(aoIface)) {
+ target = ddBean;
+ ddBeans.remove(j);
+ break;
+ }
+ }
+ if(target == null) {
+ System.out.println("Geronimo connector deployment plan has admin object with interface '"+aoIface+"' and class '"+aoClass+"' but the ra.xml does not have a matching adminobject declared. Deleting this adminobject from the Geronimo plan.");
+ continue;
+ }
+ dcb = new AdminObjectDCB(target, admin);
+ dcbs.put("class "+aoClass+" iface "+aoIface, dcb);
+ }
+ }
+ // There are some admin object types in ra.xml with no matching instances; create DConfigBeans for those
+ for (int i = 0; i < ddBeans.size(); i++) {
+ DDBean ddBean = (DDBean) ddBeans.get(i);
+ String ddClass = ddBean.getText("adminobject-class")[0];
+ String ddIface = ddBean.getText("adminobject-interface")[0];
+ GerAdminobjectType admin = connector.addNewAdminobject();
+ dcbs.put("class "+ddClass+" iface "+ddIface, new AdminObjectDCB(ddBean, admin));
+ }
+ List adminResults = new ArrayList();
+ for (Iterator it = dcbs.keySet().iterator(); it.hasNext();) {
+ String key = (String) it.next();
+ DConfigBean value = (DConfigBean) dcbs.get(key);
+ adminResults.add(value);
+ }
+ adminobjects = (AdminObjectDCB[]) adminResults.toArray(new AdminObjectDCB[adminResults.size()]);
+
//todo: Handle the GBean children
}
@@ -104,7 +215,6 @@
// import*
// hidden-classes*
// non-overridable-classes*
- // adminobject*
// gbean*
public String getConfigID() {
@@ -256,7 +366,7 @@
// ----------------------- End of JavaBean Properties ----------------------
-
+
protected SchemaTypeLoader getSchemaTypeLoader() {
return Connector15DCBRoot.SCHEMA_TYPE_LOADER;
Modified: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapter.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapter.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapter.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapter.java Fri Jan 20 20:22:22 2006
@@ -36,6 +36,7 @@
public class ResourceAdapter extends XmlBeanSupport {
private DDBean resourceAdapter;
private ConnectionDefinition[] instances = new ConnectionDefinition[0];
+ private ResourceAdapterInstance resourceAdapterInstance;
public ResourceAdapter() {
super(null);
@@ -53,6 +54,11 @@
void configure(DDBean resourceAdapter, GerResourceadapterType ra) {
this.resourceAdapter = resourceAdapter;
setXmlObject(ra);
+ if(ra.isSetResourceadapterInstance()) {
+ resourceAdapterInstance = new ResourceAdapterInstance(resourceAdapter, ra.getResourceadapterInstance());
+ } else {
+ resourceAdapterInstance = null;
+ }
if(ra.isSetOutboundResourceadapter()) {
DDBean[] test = resourceAdapter.getChildBean("outbound-resourceadapter");
if(test != null && test.length > 0) {
@@ -72,8 +78,6 @@
}
// ----------------------- JavaBean Properties for /connector/resourceadapter ----------------------
- //todo: handle the following properties
- // resourceadapter-instance?
public ConnectionDefinition[] getConnectionDefinition() {
return instances;
@@ -129,7 +133,24 @@
if(definition.getConnectionDefinition() == null) {
definition.configure(resourceAdapter, getResourceAdapter().getOutboundResourceadapter().addNewConnectionDefinition());
}
- pcs.firePropertyChange("resourceAdapter", old, instances);
+ pcs.firePropertyChange("connectionDefinition", old, instances);
+ }
+
+ public ResourceAdapterInstance getResourceAdapterInstance() {
+ return resourceAdapterInstance;
+ }
+
+ public void setResourceAdapterInstance(ResourceAdapterInstance resourceAdapterInstance) {
+ ResourceAdapterInstance old = this.resourceAdapterInstance;
+ this.resourceAdapterInstance = resourceAdapterInstance;
+ if(resourceAdapterInstance.getResourceAdapterInstance() == null) {
+ if(getResourceAdapter().isSetResourceadapterInstance()) {
+ resourceAdapterInstance.configure(resourceAdapter, getResourceAdapter().getResourceadapterInstance());
+ } else {
+ resourceAdapterInstance.configure(resourceAdapter, getResourceAdapter().addNewResourceadapterInstance());
+ }
+ }
+ pcs.firePropertyChange("resourceAdapterInstance", old, instances);
}
// ----------------------- End of JavaBean Properties ----------------------
Added: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapterInstance.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapterInstance.java?rev=370976&view=auto
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapterInstance.java (added)
+++ geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapterInstance.java Fri Jan 20 20:22:22 2006
@@ -0,0 +1,107 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.geronimo.connector.deployment.jsr88;
+
+import org.apache.geronimo.xbeans.geronimo.GerResourceadapterInstanceType;
+import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
+import org.apache.geronimo.naming.deployment.jsr88.GBeanLocator;
+import org.apache.xmlbeans.SchemaTypeLoader;
+import javax.enterprise.deploy.model.DDBean;
+
+/**
+ * Represents /connector/resourceadapter/resourceadapter-instance in the
+ * Geronimo Connector deployment plan. The settings here correspond to
+ * /connector/resourceadapter in the J2EE plan, but since there can be
+ * several instances per resource adapter, it's not 1:1 and this is not
+ * a DConfigBean.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public class ResourceAdapterInstance extends ConfigHolder {
+ private DDBean resourceAdapter;
+ private GBeanLocator workManager;
+
+ /**
+ * Present so a tool can create a new one
+ */
+ public ResourceAdapterInstance() {
+ }
+
+ public ResourceAdapterInstance(DDBean resourceAdapter, GerResourceadapterInstanceType instance) {
+ configure(resourceAdapter, instance);
+ }
+
+ protected GerResourceadapterInstanceType getResourceAdapterInstance() {
+ return (GerResourceadapterInstanceType) getXmlObject();
+ }
+
+ public void reconfigure() {
+ configure(resourceAdapter, getResourceAdapterInstance());
+ }
+
+ void configure(DDBean resourceAdapter, GerResourceadapterInstanceType xml) {
+ this.resourceAdapter = resourceAdapter;
+ super.configure(resourceAdapter, xml);
+ }
+
+ protected GerConfigPropertySettingType createConfigProperty() {
+ return getResourceAdapterInstance().addNewConfigPropertySetting();
+ }
+
+ protected GerConfigPropertySettingType[] getConfigProperties() {
+ return getResourceAdapterInstance().getConfigPropertySettingArray();
+ }
+
+ protected void removeConfigProperty(int index) {
+ getResourceAdapterInstance().removeConfigPropertySetting(index);
+ }
+
+ // ----------------------- JavaBean Properties for /resourceadapter-instance ----------------------
+
+ public String getResourceAdapterName() {
+ return getResourceAdapterInstance().getResourceadapterName();
+ }
+
+ public void setResourceAdapterName(String name) {
+ String old = getResourceAdapterName();
+ getResourceAdapterInstance().setResourceadapterName(name);
+ pcs.firePropertyChange("resourceAdapterName", old, name);
+ }
+
+ public GBeanLocator getWorkManager() {
+ return workManager;
+ }
+
+ public void setWorkManager(GBeanLocator locator) {
+ GBeanLocator old = getWorkManager();
+ if(locator != null && !locator.configured()) {
+ if(getResourceAdapterInstance().getWorkmanager() != null) {
+ locator.configure(getResourceAdapterInstance().getWorkmanager());
+ } else {
+ locator.configure(getResourceAdapterInstance().addNewWorkmanager());
+ }
+ }
+ workManager = locator;
+ pcs.firePropertyChange("workManager", old, workManager);
+ }
+
+ // ----------------------- End of JavaBean Properties ----------------------
+
+ protected SchemaTypeLoader getSchemaTypeLoader() {
+ return Connector15DCBRoot.SCHEMA_TYPE_LOADER;
+ }
+}
Propchange: geronimo/branches/1.0/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/jsr88/ResourceAdapterInstance.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms-plan.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms-plan.xml?rev=370976&view=auto
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms-plan.xml (added)
+++ geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms-plan.xml Fri Jan 20 20:22:22 2006
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Copyright 2004-2005 The Apache Software Foundation
+
+ Licensed 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.-->
+<!--$Rev: 356113 $ $Date: 2005-12-11 21:54:02 -0500 (Sun, 11 Dec 2005) $-->
+<connector configId="TestJMSConfig" xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.0">
+ <dep:import xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.0">
+ <dep:groupId>geronimo</dep:groupId>
+ <dep:type>car</dep:type>
+ <dep:artifactId>activemq-broker</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ </dep:import>
+ <resourceadapter>
+ <resourceadapter-instance>
+ <resourceadapter-name>Test ActiveMQ RA</resourceadapter-name>
+ <config-property-setting name="ServerUrl">tcp://localhost:61616</config-property-setting>
+ <config-property-setting name="UserName">geronimo-user</config-property-setting>
+ <config-property-setting name="Password">geronimo-pw</config-property-setting>
+ <workmanager>
+ <gbean-link>DefaultWorkManager</gbean-link>
+ </workmanager>
+ </resourceadapter-instance>
+ <outbound-resourceadapter>
+ <connection-definition>
+ <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface>
+ <connectiondefinition-instance>
+ <name>DefaultActiveMQConnectionFactory</name>
+ <implemented-interface>javax.jms.QueueConnectionFactory</implemented-interface>
+ <implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface>
+ <connectionmanager>
+ <xa-transaction>
+ <transaction-caching/>
+ </xa-transaction>
+ <single-pool>
+ <max-size>10</max-size>
+ <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds>
+ <match-one/>
+ </single-pool>
+ </connectionmanager>
+ </connectiondefinition-instance>
+ </connection-definition>
+ </outbound-resourceadapter>
+ </resourceadapter>
+ <adminobject>
+ <adminobject-interface>javax.jms.Queue</adminobject-interface>
+ <adminobject-class>org.activemq.message.ActiveMQQueue</adminobject-class>
+ <adminobject-instance>
+ <message-destination-name>TestQueue1Name</message-destination-name>
+ <config-property-setting name="PhysicalName">TestQueue1Physical</config-property-setting>
+ </adminobject-instance>
+ </adminobject>
+ <adminobject>
+ <adminobject-interface>javax.jms.Queue</adminobject-interface>
+ <adminobject-class>org.activemq.message.ActiveMQQueue</adminobject-class>
+ <adminobject-instance>
+ <message-destination-name>TestQueue2Name</message-destination-name>
+ <config-property-setting name="PhysicalName">TestQueue2Physical</config-property-setting>
+ </adminobject-instance>
+ <adminobject-instance>
+ <message-destination-name>TestQueue3Name</message-destination-name>
+ <config-property-setting name="PhysicalName">TestQueue3Physical</config-property-setting>
+ </adminobject-instance>
+ </adminobject>
+ <adminobject>
+ <adminobject-interface>javax.jms.Topic</adminobject-interface>
+ <adminobject-class>org.activemq.message.ActiveMQTopic</adminobject-class>
+ <adminobject-instance>
+ <message-destination-name>TestTopic1Name</message-destination-name>
+ <config-property-setting name="PhysicalName">TestTopic1Physical</config-property-setting>
+ </adminobject-instance>
+ </adminobject>
+</connector>
\ No newline at end of file
Propchange: geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms-plan.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms.rar
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms.rar?rev=370976&view=auto
==============================================================================
Binary file - no diff available.
Propchange: geronimo/branches/1.0/modules/connector-builder/src/test-resources/jms.rar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: geronimo/branches/1.0/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBTest.java?rev=370976&r1=370975&r2=370976&view=diff
==============================================================================
--- geronimo/branches/1.0/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBTest.java (original)
+++ geronimo/branches/1.0/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/jsr88/Connector15DCBTest.java Fri Jan 20 20:22:22 2006
@@ -21,9 +21,12 @@
import org.apache.geronimo.deployment.tools.loader.ConnectorDeployable;
import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
+import org.apache.geronimo.naming.deployment.jsr88.GBeanLocator;
import javax.enterprise.deploy.model.DDBeanRoot;
+import javax.enterprise.deploy.model.DDBean;
import javax.enterprise.deploy.shared.ModuleType;
+import javax.enterprise.deploy.spi.DConfigBean;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
@@ -69,14 +72,14 @@
assertNull(connector.getParentID());
assertNull(connector.getSuppressDefaultParentID());
connector.setConfigID("MyDatabase");
- connector.setParentID("org/apache/geronimo/Server");
- // Try the dependency element
+ connector.setParentID("geronimo/j2ee-server/1.0/car");
+ // Try the /connector/dependency element
assertNotNull(connector.getDependency());
assertEquals(0, connector.getDependency().length);
Dependency dep = new Dependency();
connector.setDependency(new Dependency[]{dep});
assertEquals(1, connector.getDependency().length);
- dep.setURI("postgresql/jars/postgresql-8.0-313.jdbc3.jar");
+ dep.setURI("postgresql/postgresql-8.0/313.jdbc3/jar");
assertNull(dep.getArtifactId());
assertNull(dep.getGroupId());
assertNull(dep.getType());
@@ -86,6 +89,9 @@
dep.setVersion("313.jdbc3");
assertNull(dep.getURI());
assertNull(dep.getType());
+ // todo: Try the /connector/import element
+ // todo: Try the /connector/hidden-classes element
+ // todo: Try the /connector/non-overridable-classes element
// Try the /connector/resourceadapter element
assertNotNull(connector.getResourceAdapter());
assertEquals(1, connector.getResourceAdapter().length);
@@ -215,15 +221,21 @@
GerConfigPropertySettingType[] settings = doc.getConnector().getResourceadapterArray(0).
getOutboundResourceadapter().getConnectionDefinitionArray(0).
getConnectiondefinitionInstanceArray(0).getConfigPropertySettingArray();
- assertEquals(4, settings.length);
+ assertEquals(2, settings.length);
+ Set seen = new HashSet();
for (int i = 0; i < settings.length; i++) {
GerConfigPropertySettingType setting = settings[i];
- if(setting.getName().equals("CommitBeforeAutocommit")) {
- assertEquals("false", setting.getStringValue());
- } else if(setting.getName().equals("Driver")) {
+ if(seen.contains(setting.getName())) {
+ fail("Duplicate for config property setting '"+setting.getName()+"'");
+ }
+ seen.add(setting.getName());
+// These two are set to their defaults and now no longer appear
+// if(setting.getName().equals("CommitBeforeAutocommit")) {
+// assertEquals("false", setting.getStringValue());
+// } else if(setting.getName().equals("ExceptionSorterClass")) {
+// assertEquals("org.tranql.connector.AllExceptionsAreFatalSorter", setting.getStringValue());
+ if(setting.getName().equals("Driver")) {
assertEquals("org.apache.derby.jdbc.EmbeddedDriver", setting.getStringValue());
- } else if(setting.getName().equals("ExceptionSorterClass")) {
- assertEquals("org.tranql.connector.AllExceptionsAreFatalSorter", setting.getStringValue());
} else if(setting.getName().equals("ConnectionURL")) {
assertEquals("jdbc:derby:TestDatabase;create=true", setting.getStringValue());
} else fail("Unknown connection setting '"+setting.getName()+"'");
@@ -233,12 +245,12 @@
// Now set them to blank
nullCount = 0;
for (int i = 0; i < 6; i++) {
- if(instance.getConfigPropertySetting()[i].getValue() == null) {
+ if(instance.getConfigPropertySetting()[i].getValue() == null || instance.getConfigPropertySetting()[i].isSetToDefault()) {
instance.getConfigPropertySetting()[i].setValue("");
++nullCount;
}
}
- assertEquals(2, nullCount);
+ assertEquals(4, nullCount);
// Now make sure we write out with 6
pout = new ByteArrayOutputStream();
dcbRoot.toXML(pout);
@@ -250,20 +262,282 @@
getOutboundResourceadapter().getConnectionDefinitionArray(0).
getConnectiondefinitionInstanceArray(0).getConfigPropertySettingArray();
assertEquals(6, settings.length);
+ seen.clear();
for (int i = 0; i < settings.length; i++) {
GerConfigPropertySettingType setting = settings[i];
+ if(seen.contains(setting.getName())) {
+ fail("Duplicate for config property setting '"+setting.getName()+"'");
+ }
+ seen.add(setting.getName());
if(setting.getName().equals("UserName")) {
assertEquals("", setting.getStringValue());
} else if(setting.getName().equals("Password")) {
assertEquals("", setting.getStringValue());
} else if(setting.getName().equals("CommitBeforeAutocommit")) {
- assertEquals("false", setting.getStringValue());
+ assertEquals("", setting.getStringValue());
} else if(setting.getName().equals("Driver")) {
assertEquals("org.apache.derby.jdbc.EmbeddedDriver", setting.getStringValue());
} else if(setting.getName().equals("ExceptionSorterClass")) {
- assertEquals("org.tranql.connector.AllExceptionsAreFatalSorter", setting.getStringValue());
+ assertEquals("", setting.getStringValue());
} else if(setting.getName().equals("ConnectionURL")) {
assertEquals("jdbc:derby:TestDatabase;create=true", setting.getStringValue());
+ } else fail("Unknown connection setting '"+setting.getName()+"'");
+ }
+ }
+
+ public void testCreateJMSResource() throws Exception {
+ // Create and test the DDBeanRoot
+ URL resource = classLoader.getResource("jms.rar");
+ assertNotNull(resource);
+ ConnectorDeployable deployable = new ConnectorDeployable(resource);
+ assertEquals(ModuleType.RAR, deployable.getType());
+ Set entrySet = new HashSet(Collections.list(deployable.entries()));
+ assertTrue(entrySet.contains("META-INF/ra.xml"));
+ assertTrue(entrySet.contains("activemq-ra-3.2.1.jar"));
+ DDBeanRoot root = deployable.getDDBeanRoot();
+ assertNotNull(root);
+ assertEquals(ModuleType.RAR, root.getType());
+ assertEquals(deployable, root.getDeployableObject());
+ // Create the DConfigBeanRoot
+ Connector15DCBRoot dcbRoot = new Connector15DCBRoot(root);
+ assertNotNull(dcbRoot.getXpaths());
+ assertEquals(1, dcbRoot.getXpaths().length);
+ assertEquals("connector", dcbRoot.getXpaths()[0]);
+ // Try the /connector element
+ ConnectorDCB connector = (ConnectorDCB) dcbRoot.getDConfigBean(root.getChildBean(dcbRoot.getXpaths()[0])[0]);
+ assertNotNull(connector);
+ assertNull(connector.getConfigID());
+ assertNull(connector.getInverseClassLoading());
+ assertNull(connector.getParentID());
+ assertNull(connector.getSuppressDefaultParentID());
+ connector.setConfigID("MyJMS");
+ connector.setParentID("geronimo/activemq/1.0/car");
+ // Try the /connector/dependency element
+ assertNotNull(connector.getDependency());
+ assertEquals(0, connector.getDependency().length);
+ Dependency dep = new Dependency();
+ connector.setDependency(new Dependency[]{dep});
+ assertEquals(1, connector.getDependency().length);
+ dep.setURI("postgresql/postgresql-8.0/313.jdbc3/jar");
+ assertNull(dep.getArtifactId());
+ assertNull(dep.getGroupId());
+ assertNull(dep.getType());
+ assertNull(dep.getVersion());
+ dep.setGroupId("postgresql");
+ dep.setArtifactId("postgresql-8.0");
+ dep.setVersion("313.jdbc3");
+ assertNull(dep.getURI());
+ assertNull(dep.getType());
+ // todo: Try the /connector/import element
+ // todo: Try the /connector/hidden-classes element
+ // todo: Try the /connector/non-overridable-classes element
+ // Try the /connector/resourceadapter element
+ assertNotNull(connector.getResourceAdapter());
+ assertEquals(1, connector.getResourceAdapter().length);
+ ResourceAdapter adapter = connector.getResourceAdapter()[0];
+ assertNotNull(adapter);
+ // Try the /connector/resourceadapter/resourceadapter-instance element
+ assertNull(adapter.getResourceAdapterInstance());
+ adapter.setResourceAdapterInstance(new ResourceAdapterInstance());
+ ResourceAdapterInstance raInstance = adapter.getResourceAdapterInstance();
+ assertNull(raInstance.getResourceAdapterName());
+ assertNotNull(raInstance.getConfigProperties());
+ assertEquals(7, raInstance.getConfigPropertySetting().length);
+ for (int i = 0; i < raInstance.getConfigPropertySetting().length; i++) {
+ ConfigPropertySetting config = raInstance.getConfigPropertySetting()[i];
+ assertTrue(config.isSetToDefault());
+ }
+ int found = 0;
+ for (int i = 0; i < 7; i++) {
+ ConfigPropertySetting setting = raInstance.getConfigPropertySetting(i);
+ if(setting.getName().equals("ServerUrl")) {
+ setting.setValue("tcp://localhost:12345");
+ ++found;
+ } else if(setting.getName().equals("UserName")) {
+ setting.setValue("test-user");
+ ++found;
+ } else if(setting.getName().equals("Password")) {
+ setting.setValue("test-password");
+ ++found;
+ }
+ }
+ assertEquals(found, 3);
+ // Try the /connector/resourceadapter/resourceadapter-instance/workmanager
+ assertNull(raInstance.getWorkManager());
+ GBeanLocator workManager = new GBeanLocator();
+ raInstance.setWorkManager(workManager);
+ workManager.setGBeanLink("DefaultWorkManager");
+ // Try the /connector/resourceadapter/outbound-resourceadapter/connection-definition element
+ assertNotNull(adapter.getConnectionDefinition());
+ assertEquals(0, adapter.getConnectionDefinition().length);
+ ConnectionDefinition definition = new ConnectionDefinition();
+ adapter.setConnectionDefinition(new ConnectionDefinition[]{definition});
+ assertEquals(1, adapter.getConnectionDefinition().length);
+ definition.setConnectionFactoryInterface("javax.jms.ConnectionFactory");
+ // Try the .../connection-definition/connectiondefinition-instance elements
+ assertNotNull(definition.getConnectionInstances());
+ assertEquals(0, definition.getConnectionInstances().length);
+ ConnectionDefinitionInstance instance = new ConnectionDefinitionInstance();
+ definition.setConnectionInstance(new ConnectionDefinitionInstance[]{instance});
+ assertEquals(1, definition.getConnectionInstances().length);
+ assertNotNull(instance.getDDBean());
+ instance.setName("Test JMS Resource");
+ instance.setImplementedInterface(new String[]{"javax.jms.QueueConnectorFactory","javax.jms.TopicConnectionFactory"});
+ // Try the .../connection-definition/connectiondefinition-instance/config-property-setting elements
+ assertNotNull(instance.getConfigPropertySetting());
+ assertEquals(0, instance.getConfigPropertySetting().length);
+ // Try the .../connection-definition/connectionmanager elements
+ ConnectionManager manager = instance.getConnectionManager();
+ assertNotNull(manager);
+ assertFalse(manager.isContainerManagedSecurity());
+ assertFalse(manager.isPoolNone());
+ assertNotNull(manager.getPoolSingle());
+ assertNull(manager.getPoolPartitioned());
+ assertFalse(manager.isTransactionLog());
+ assertFalse(manager.isTransactionNone());
+ assertTrue(manager.isTransactionXA());
+ assertFalse(manager.isTransactionXACachingThread());
+ assertTrue(manager.isTransactionXACachingTransaction());
+ assertFalse(manager.isTransactionLocal());
+ SinglePool pool = manager.getPoolSingle();
+ assertNull(pool.getMinSize());
+ assertNull(pool.getMaxSize());
+ assertNull(pool.getIdleTimeoutMinutes());
+ assertNull(pool.getBlockingTimeoutMillis());
+ assertTrue(pool.isMatchOne());
+ assertFalse(pool.isMatchAll());
+ assertFalse(pool.isSelectOneAssumeMatch());
+ pool.setMinSize(new Integer(2));
+ pool.setMaxSize(new Integer(30));
+ pool.setBlockingTimeoutMillis(new Integer(5000));
+ DDBean[] ddBeans = connector.getDDBean().getChildBean(connector.getXpaths()[0]);
+ assertNotNull(ddBeans);
+ assertEquals(2, ddBeans.length);
+ DConfigBean[] adminDCBs = new DConfigBean[ddBeans.length];
+ for (int i = 0; i < adminDCBs.length; i++) {
+ adminDCBs[i] = connector.getDConfigBean(ddBeans[i]);
+ AdminObjectDCB dcb = (AdminObjectDCB) adminDCBs[i];
+ if(dcb.getAdminObjectClass().indexOf("Queue") > -1) {
+ assertEquals(0, dcb.getAdminObjectInstance().length);
+ AdminObjectInstance one = new AdminObjectInstance();
+ AdminObjectInstance two = new AdminObjectInstance();
+ dcb.setAdminObjectInstance(new AdminObjectInstance[]{one, two});
+ one.setMessageDestinationName("TestQueue1");
+ one.getConfigPropertySetting()[0].setValue("PhysicalName1");
+ two.setMessageDestinationName("TestQueue2");
+ two.getConfigPropertySetting()[0].setValue("PhysicalName2");
+ } else if(dcb.getAdminObjectClass().indexOf("Topic") > -1) {
+ assertEquals(0, dcb.getAdminObjectInstance().length);
+ } else fail("Unknown AdminobjectDCB admin object class '"+dcb.getAdminObjectClass()+"'");
+ }
+
+
+ //todo: Look at the XmlBeans tree and make sure the right stuff is in there
+ //dcbRoot.toXML(System.out);
+ }
+
+ public void testLoadJMSResources() throws Exception {
+ InputStream in = classLoader.getResource("jms-plan.xml").openStream();
+ // Create and test the DDBeanRoot
+ URL resource = classLoader.getResource("jms.rar");
+ assertNotNull(resource);
+ ConnectorDeployable deployable = new ConnectorDeployable(resource);
+ assertEquals(ModuleType.RAR, deployable.getType());
+ Set entrySet = new HashSet(Collections.list(deployable.entries()));
+ assertTrue(entrySet.contains("META-INF/ra.xml"));
+ assertTrue(entrySet.contains("activemq-ra-3.2.1.jar"));
+ DDBeanRoot root = deployable.getDDBeanRoot();
+ assertNotNull(root);
+ assertEquals(ModuleType.RAR, root.getType());
+ assertEquals(deployable, root.getDeployableObject());
+ // Create the DConfigBeanRoot
+ Connector15DCBRoot dcbRoot = new Connector15DCBRoot(root);
+ RARConfiguration configuration = new RARConfiguration(deployable, dcbRoot);
+ configuration.restore(in);
+ // Try the /connector element
+ ConnectorDCB connector = (ConnectorDCB) dcbRoot.getDConfigBean(root.getChildBean(dcbRoot.getXpaths()[0])[0]);
+ assertNotNull(connector);
+ // Try the /connector/resourceadapter element
+ assertNotNull(connector.getResourceAdapter());
+ assertEquals(1, connector.getResourceAdapter().length);
+ ResourceAdapter adapter = connector.getResourceAdapter()[0];
+ assertNotNull(adapter);
+ // Try the /connector/resourceadapter/resourceadapter-instance element
+ ResourceAdapterInstance raInstance = adapter.getResourceAdapterInstance();
+ assertNotNull(raInstance);
+ assertEquals("Test ActiveMQ RA", raInstance.getResourceAdapterName());
+ assertEquals(7, raInstance.getConfigPropertySetting().length);
+ int found = 0;
+ Set seen = new HashSet();
+ for (int i = 0; i < 7; i++) {
+ ConfigPropertySetting setting = raInstance.getConfigPropertySetting(i);
+ if(seen.contains(setting.getName())) {
+ fail("Duplicate for config property setting '"+setting.getName()+"'");
+ }
+ seen.add(setting.getName());
+ if(setting.getName().equals("ServerUrl")) {
+ assertEquals("tcp://localhost:61616", setting.getValue());
+ ++found;
+ } else if(setting.getName().equals("UserName")) {
+ assertEquals("geronimo-user", setting.getValue());
+ ++found;
+ } else if(setting.getName().equals("Password")) {
+ assertEquals("geronimo-pw", setting.getValue());
+ ++found;
+ }
+ }
+ assertEquals(3, found);
+ //todo: check the work manager
+ // Try the /connector/resourceadapter/outbound-resourceadapter/connection-definition element
+ assertNotNull(adapter.getConnectionDefinition());
+ assertEquals(1, adapter.getConnectionDefinition().length);
+ ConnectionDefinition definition = adapter.getConnectionDefinition(0);
+ // Try the .../connection-definition/connectiondefinition-instance elements
+ assertNotNull(definition.getConnectionInstances());
+ assertEquals(1, definition.getConnectionInstances().length);
+ ConnectionDefinitionInstance instance = definition.getConnectionInstances()[0];
+ // Try the .../connection-definition/connectiondefinition-instance/config-property-setting elements
+ assertNotNull(instance.getConfigPropertySetting());
+ assertEquals(0, instance.getConfigPropertySetting().length);
+ // Try the /connector/adminobject element
+ DDBean[] ddBeans = connector.getDDBean().getChildBean(connector.getXpaths()[0]);
+ assertNotNull(ddBeans);
+ assertEquals(2, ddBeans.length);
+ DConfigBean[] adminDCBs = new DConfigBean[ddBeans.length];
+ for (int i = 0; i < adminDCBs.length; i++) {
+ adminDCBs[i] = connector.getDConfigBean(ddBeans[i]);
+ AdminObjectDCB dcb = (AdminObjectDCB) adminDCBs[i];
+ if(dcb.getAdminObjectClass().indexOf("Queue") > -1) {
+ assertEquals(3, dcb.getAdminObjectInstance().length);
+ assertEquals("TestQueue1Name", dcb.getAdminObjectInstance()[0].getMessageDestinationName());
+ assertEquals("TestQueue2Name", dcb.getAdminObjectInstance()[1].getMessageDestinationName());
+ assertEquals("TestQueue3Name", dcb.getAdminObjectInstance()[2].getMessageDestinationName());
+ } else if(dcb.getAdminObjectClass().indexOf("Topic") > -1) {
+ assertEquals(1, dcb.getAdminObjectInstance().length);
+ assertEquals("TestTopic1Name", dcb.getAdminObjectInstance()[0].getMessageDestinationName());
+ } else fail("Unknown AdminobjectDCB admin object class '"+dcb.getAdminObjectClass()+"'");
+ }
+ // Make sure that saving clears out the null/default values
+ ByteArrayOutputStream pout = new ByteArrayOutputStream();
+ dcbRoot.toXML(pout);
+ pout.close();
+ ByteArrayInputStream pin = new ByteArrayInputStream(pout.toByteArray());
+ GerConnectorDocument doc = GerConnectorDocument.Factory.parse(pin);
+ pin.close();
+ GerConfigPropertySettingType[] settings = doc.getConnector().getResourceadapterArray(0).
+ getResourceadapterInstance().getConfigPropertySettingArray();
+ assertEquals(2, settings.length);
+ seen.clear();
+ for (int i = 0; i < settings.length; i++) {
+ GerConfigPropertySettingType setting = settings[i];
+ if(seen.contains(setting.getName())) {
+ fail("Duplicate for config property setting '"+setting.getName()+"'");
+ }
+ seen.add(setting.getName());
+ if(setting.getName().equals("UserName")) {
+ assertEquals("geronimo-user", setting.getStringValue());
+ } else if(setting.getName().equals("Password")) {
+ assertEquals("geronimo-pw", setting.getStringValue());
} else fail("Unknown connection setting '"+setting.getName()+"'");
}
}
Added: geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/GBeanLocator.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/GBeanLocator.java?rev=370976&view=auto
==============================================================================
--- geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/GBeanLocator.java (added)
+++ geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/GBeanLocator.java Fri Jan 20 20:22:22 2006
@@ -0,0 +1,199 @@
+package org.apache.geronimo.naming.deployment.jsr88;
+
+import org.apache.geronimo.deployment.plugin.XmlBeanSupport;
+import org.apache.geronimo.xbeans.geronimo.naming.GerGbeanLocatorType;
+import org.apache.xmlbeans.XmlObject;
+
+/**
+ * Represents an element of the gbean-locatorType in a Geronimo
+ * deployment plan.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public class GBeanLocator extends XmlBeanSupport {
+ public GBeanLocator() {
+ super(null);
+ }
+
+ public GBeanLocator(GerGbeanLocatorType xmlObject) {
+ super(xmlObject);
+ }
+
+ protected GerGbeanLocatorType getGBeanLocator() {
+ return (GerGbeanLocatorType) getXmlObject();
+ }
+
+ // Must be public but should not be a JavaBean property -- sigh
+ public boolean configured() {
+ return getXmlObject() != null;
+ }
+
+ public void configure(GerGbeanLocatorType xml) {
+ setXmlObject(xml);
+ }
+
+ public String getGBeanLink() {
+ return getGBeanLocator().getGbeanLink();
+ }
+
+ public void setGBeanLink(String link) {
+ GerGbeanLocatorType locator = getGBeanLocator();
+ if(link != null) {
+ ObjectNameGroup before = null;
+ if(locator.isSetApplication()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetApplication();
+ }
+ if(locator.isSetDomain()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetDomain();
+ }
+ if(locator.isSetModule()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetModule();
+ }
+ if(locator.isSetName()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetName();
+ }
+ if(locator.isSetServer()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetServer();
+ }
+ if(locator.isSetType()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetType();
+ }
+ if(before != null) {
+ pcs.firePropertyChange("objectNameComponents", before, null);
+ }
+ if(locator.isSetTargetName()) {
+ String temp = locator.getTargetName();
+ locator.unsetTargetName();
+ pcs.firePropertyChange("targetName", temp, null);
+ }
+ }
+ String old = getGBeanLink();
+ locator.setGbeanLink(link);
+ pcs.firePropertyChange("GBeanLink", old, link);
+ }
+
+ public String getTargetName() {
+ return getGBeanLocator().getGbeanLink();
+ }
+
+ public void setTargetName(String name) {
+ GerGbeanLocatorType locator = getGBeanLocator();
+ if(name != null) {
+ ObjectNameGroup before = null;
+ if(locator.isSetApplication()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetApplication();
+ }
+ if(locator.isSetDomain()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetDomain();
+ }
+ if(locator.isSetModule()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetModule();
+ }
+ if(locator.isSetName()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetName();
+ }
+ if(locator.isSetServer()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetServer();
+ }
+ if(locator.isSetType()) {
+ if(before == null) before = getObjectNameComponents();
+ locator.unsetType();
+ }
+ if(before != null) {
+ pcs.firePropertyChange("objectNameComponents", before, null);
+ }
+ if(locator.isSetGbeanLink()) {
+ String temp = locator.getGbeanLink();
+ locator.unsetGbeanLink();
+ pcs.firePropertyChange("GBeanLink", temp, null);
+ }
+ }
+ String old = getTargetName();
+ locator.setTargetName(name);
+ pcs.firePropertyChange("targetName", old, name);
+ }
+
+ public ObjectNameGroup getObjectNameComponents() {
+ ObjectNameGroup group = new ObjectNameGroup();
+ GerGbeanLocatorType locator = getGBeanLocator();
+ group.setApplication(locator.getApplication());
+ group.setDomain(locator.getDomain());
+ group.setModule(locator.getModule());
+ group.setName(locator.getName());
+ group.setServer(locator.getServer());
+ group.setType(locator.getType());
+ return group.empty() ? null : group;
+ }
+
+ public void setObjectNamecomponents(ObjectNameGroup group) {
+ GerGbeanLocatorType locator = getGBeanLocator();
+ if(group != null && !group.empty()) {
+ if(locator.isSetGbeanLink()) {
+ String temp = locator.getGbeanLink();
+ locator.unsetGbeanLink();
+ pcs.firePropertyChange("GBeanLink", temp, null);
+ }
+ if(locator.isSetTargetName()) {
+ String temp = locator.getTargetName();
+ locator.unsetTargetName();
+ pcs.firePropertyChange("targetName", temp, null);
+ }
+ }
+ ObjectNameGroup old = getObjectNameComponents();
+ if(group == null) {
+ locator.unsetApplication();
+ locator.unsetDomain();
+ locator.unsetModule();
+ locator.unsetName();
+ locator.unsetServer();
+ locator.unsetType();
+ } else {
+ if(isEmpty(group.getApplication())) {
+ locator.unsetApplication();
+ } else {
+ locator.setApplication(group.getApplication());
+ }
+ if(isEmpty(group.getDomain())) {
+ locator.unsetDomain();
+ } else {
+ locator.setDomain(group.getDomain());
+ }
+ if(isEmpty(group.getModule())) {
+ locator.unsetModule();
+ } else {
+ locator.setModule(group.getModule());
+ }
+ if(isEmpty(group.getName())) {
+ locator.unsetName();
+ } else {
+ locator.setName(group.getName());
+ }
+ if(isEmpty(group.getServer())) {
+ locator.unsetServer();
+ } else {
+ locator.setServer(group.getServer());
+ }
+ if(isEmpty(group.getType())) {
+ locator.unsetType();
+ } else {
+ locator.setType(group.getType());
+ }
+ }
+ pcs.firePropertyChange("objectNameComponents", old, getObjectNameComponents());
+ }
+
+ private static boolean isEmpty(String s) {
+ return s == null || s.trim().equals("");
+ }
+}
Propchange: geronimo/branches/1.0/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/jsr88/GBeanLocator.java
------------------------------------------------------------------------------
svn:eol-style = native