001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.geronimo.connector.deployment.jsr88;
018
019 import javax.enterprise.deploy.model.DDBean;
020 import org.apache.geronimo.xbeans.geronimo.GerConnectiondefinitionInstanceType;
021 import org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
022 import org.apache.geronimo.naming.deployment.jsr88.GBeanLocator;
023 import org.apache.xmlbeans.SchemaTypeLoader;
024
025 /**
026 * Represents connection-definition/connectiondefinition-instance in the
027 * Geronimo Connector deployment plan.
028 *
029 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
030 */
031 public class ConnectionDefinitionInstance extends ConfigHolder {
032 private DDBean connectionDefinition;
033 private ConnectionManager manager;
034
035 public ConnectionDefinitionInstance() {
036 }
037
038 public ConnectionDefinitionInstance(DDBean connectionDefinition, GerConnectiondefinitionInstanceType instance) {
039 configure(connectionDefinition, instance);
040 }
041
042 protected GerConnectiondefinitionInstanceType getConnectionInstance() {
043 return (GerConnectiondefinitionInstanceType) getXmlObject();
044 }
045
046 public void reconfigure() {
047 configure(connectionDefinition, getConnectionInstance());
048 }
049
050 void configure(DDBean connectionDefinition, GerConnectiondefinitionInstanceType definition) {
051 this.connectionDefinition = connectionDefinition;
052 super.configure(connectionDefinition, definition);
053 if(connectionDefinition != null) {
054 DDBean parent = connectionDefinition.getChildBean("..")[0];
055 ConnectionManager oldMgr = manager;
056 if(oldMgr == null) {
057 if(definition.getConnectionmanager() != null) {
058 manager = new ConnectionManager(parent, definition.getConnectionmanager());
059 } else {
060 manager = new ConnectionManager(parent, definition.addNewConnectionmanager());
061 }
062 } else {
063 if(definition.getConnectionmanager() != null) {
064 manager.configure(parent, definition.getConnectionmanager());
065 } else {
066 manager.configure(parent, definition.addNewConnectionmanager());
067 }
068 }
069 pcs.firePropertyChange("connectionManager", oldMgr, manager);
070 }
071 }
072
073 DDBean getDDBean() {
074 return connectionDefinition;
075 }
076
077 protected GerConfigPropertySettingType createConfigProperty() {
078 return getConnectionInstance().addNewConfigPropertySetting();
079 }
080
081 protected GerConfigPropertySettingType[] getConfigProperties() {
082 return getConnectionInstance().getConfigPropertySettingArray();
083 }
084
085 protected void removeConfigProperty(int index) {
086 getConnectionInstance().removeConfigPropertySetting(index);
087 }
088
089 // ----------------------- JavaBean Properties for /connectiondefinition-instance ----------------------
090
091 public String getName() {
092 return getConnectionInstance().getName();
093 }
094
095 public void setName(String name) {
096 String old = getName();
097 getConnectionInstance().setName(name);
098 pcs.firePropertyChange("name", old, name);
099 }
100
101 public String[] getImplementedInterface() {
102 return getConnectionInstance().getImplementedInterfaceArray();
103 }
104
105 public String getImplementedInterface(int index) {
106 return getConnectionInstance().getImplementedInterfaceArray(index);
107 }
108
109 public void setImplementedInterface(String[] list) {
110 String[] old = getImplementedInterface();
111 getConnectionInstance().setImplementedInterfaceArray(list);
112 pcs.firePropertyChange("implementedInterface", old, list);
113 }
114
115 public void setImplementedInterface(int index, String iface) {
116 String[] old = getImplementedInterface();
117 getConnectionInstance().setImplementedInterfaceArray(index, iface);
118 pcs.firePropertyChange("implementedInterface", old, getImplementedInterface());
119 }
120
121 public ConnectionManager getConnectionManager() {
122 return manager;
123 }
124
125 // ----------------------- End of JavaBean Properties ----------------------
126
127 protected SchemaTypeLoader getSchemaTypeLoader() {
128 return Connector15DCBRoot.SCHEMA_TYPE_LOADER;
129 }
130 }