[teiid-commits] teiid SVN: r1882 - in branches/JCA: build/kit-jboss-container/deployers/teiid.deployer and 13 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Mon Mar 1 15:46:02 EST 2010
Author: rareddy
Date: 2010-03-01 15:45:58 -0500 (Mon, 01 Mar 2010)
New Revision: 1882
Added:
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ListOverMap.java
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java
branches/JCA/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetadataComponentMapper.java
Removed:
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java
Modified:
branches/JCA/adminshell/src/main/resources/scripts/adminapi.bsh
branches/JCA/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
branches/JCA/client/src/main/java/org/teiid/adminapi/Admin.java
branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java
branches/JCA/client/src/main/java/org/teiid/adminapi/TeiidAdmin.java
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/AdminObjectImpl.java
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ReferenceMappingMetadata.java
branches/JCA/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java
branches/JCA/client/src/main/resources/vdb-deployer.xsd
branches/JCA/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/ManagedUtil.java
branches/JCA/jboss-integration/src/test/resources/TransactionsRevisited.vdb
branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java
branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
Log:
TEIID-998: Removed data roles from schema; renamed few properties in the schema; made models and properties access to be hash based;started adding in code for update of the deployment file.
Modified: branches/JCA/adminshell/src/main/resources/scripts/adminapi.bsh
===================================================================
--- branches/JCA/adminshell/src/main/resources/scripts/adminapi.bsh 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/adminshell/src/main/resources/scripts/adminapi.bsh 2010-03-01 20:45:58 UTC (rev 1882)
@@ -100,24 +100,30 @@
/**
* Assign a {@link ConnectorBinding} to a {@link VDB}'s Model
*
- * @param connectorBindingName
- * Name of the ConnectorBinding
* @param vdbName
* Name of the VDB
* @param vdbVersion
* Version of the VDB
* @param modelName
* Name of the Model to map Connector Binding
+ * @param connectorBindingName
+ * Name of the ConnectorBinding
* @throws AdminException
* if there's a system error or if there's a user input error.
* @since 4.3
*/
-void assignBindingToModel(String connectorBindingName, String vdbName, String vdbVersion, String modelName) {
+void assignBindingToModel(String vdbName, int vdbVersion, String modelName, String connectorBindingName) {
debug("Assigning Connector Binding " + connectorBindingName + " to Model " + modelName + " in VDB " + vdbName + " version " + vdbVersion);
checkAdmin();
- internalAdmin.assignBindingToModel(connectorBindingName, vdbName, vdbVersion, modelName);
+ internalAdmin.assignBindingToModel(vdbName, vdbVersion, modelName, connectorBindingName);
}
+void assignBindingToModel(String vdbName, int vdbVersion, String modelName, String[] connectorBindingNames) {
+ debug("Assigning Connector Bindings " + connectorBindingNames + " to Model " + modelName + " in VDB " + vdbName + " version " + vdbVersion);
+ checkAdmin();
+ internalAdmin.assignBindingToModel(vdbName, vdbVersion, modelName, connectorBindingNames);
+}
+
/**
* Adds JDBC XA Data Source in the container.
* @param dsName - name of the source
@@ -298,6 +304,20 @@
}
/**
+ * Get the VDB
+ * @param vdbName
+ * @param vbdVersion
+ * @throws AdminException if there's a system error.
+ * @return
+ */
+VDB getVDB(String vdbName, int version) {
+ checkAdmin();
+ result = internalAdmin.getVDB(vdbName, version);
+ debug(result);
+ return result;
+}
+
+/**
* Get all the Connector Bindings for the given VDB identifier pattern
* @param vdbName - Name of the VDB
* @param vdbVersion - version of the VDB
Modified: branches/JCA/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
===================================================================
--- branches/JCA/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml 2010-03-01 20:45:58 UTC (rev 1882)
@@ -56,6 +56,10 @@
<property name="managedObjectFactory"><inject bean="ManagedObjectFactory"/></property>
</bean>
+ <!-- Persistence class for the VDB deployment file -->
+ <bean name="VDBMetadataComponentMapper" class="org.teiid.jboss.deployers.VDBMetadataComponentMapper">
+ <constructor><parameter><inject bean="PersistenceFactory" /></parameter></constructor>
+ </bean>
<!-- JBOSS Cache -->
<!-- Uncomment for JBoss Cache -->
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/Admin.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/Admin.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/Admin.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -46,15 +46,15 @@
* @throws AdminException
* if there's a system error or if there's a user input error.
*/
- void assignBindingToModel(String connectorBindingName,
- String vdbName,
- String vdbVersion,
- String modelName) throws AdminException;
+ void assignBindingToModel(String vdbName,
+ int vdbVersion,
+ String modelName,
+ String connectorBindingName) throws AdminException;
- void assignBindingsToModel(String[] connectorBindingName,
- String vdbName,
- String vdbVersion,
- String modelName) throws AdminException;
+ void assignBindingsToModel(String vdbName,
+ int vdbVersion,
+ String modelName,
+ String[] connectorBindingName) throws AdminException;
/**
* Set/update the property for the Connector Binding identified by the given deployed name.
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -22,7 +22,6 @@
package org.teiid.adminapi;
-import java.util.List;
/**
* Represents a metadata model in the Teiid system.
@@ -32,12 +31,6 @@
public interface Model extends AdminObject {
/**
- * Return the connector binding names for this Virtual Database.
- * @return connector bindings bound to this model.
- */
- List<String> getConnectorBindingNames();
-
- /**
* Determine if this model is a Source model.
*
* @return <code>true</code> if it contains physical group(s).
@@ -54,13 +47,12 @@
/**
* Retrieve the model type.
- * TODO: one of ...
* @return model type
*/
String getModelType();
/**
- * Retrive the model URI.
+ * Retrieve the model URI.
*
* @return model URI
*/
@@ -73,8 +65,21 @@
*/
boolean isSupportsMultiSourceBindings();
+ /**
+ * Path of the model inside the VDB (optional)
+ * @return String
+ */
String getPath();
+ /**
+ * UUID of the Model (optional)
+ * @return String
+ */
String getUuid();
+ /**
+ * Associated connector binding's reference name
+ * @return String
+ */
+ String getConnectorReference();
}
\ No newline at end of file
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/TeiidAdmin.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/TeiidAdmin.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/TeiidAdmin.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -29,22 +29,13 @@
public abstract class TeiidAdmin implements Admin, Serializable {
@Override
- public void assignBindingToModel(String connectorBindingName,
- String vdbName, String vdbVersion, String modelName)
+ public void assignBindingToModel(String vdbName, int vdbVersion, String modelName, String connectorBindingName)
throws AdminException {
// rameshTODO Auto-generated method stub
}
- @Override
- public void assignBindingsToModel(String[] connectorBindingName,
- String vdbName, String vdbVersion, String modelName)
- throws AdminException {
- // rameshTODO Auto-generated method stub
-
- }
-
@Override
public Collection<ProcessObject> getProcesses(String processIdentifier) throws AdminException {
ArrayList<ProcessObject> list = new ArrayList<ProcessObject>();
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/AdminObjectImpl.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/AdminObjectImpl.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/AdminObjectImpl.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -41,7 +42,7 @@
private String name;
- private List<PropertyMetadata> properties;
+ private LinkedHashMap<String, PropertyMetadata> properties = new LinkedHashMap<String, PropertyMetadata>();
private transient Map<String, Object> attachments = Collections.synchronizedMap(new HashMap<String, Object>());
@@ -56,50 +57,36 @@
@Override
public Properties getProperties() {
- if (this.properties == null) {
- return null;
- }
-
Properties props = new Properties();
- for (PropertyMetadata p:this.properties) {
+ for (PropertyMetadata p:this.properties.values()) {
props.setProperty(p.getName(), p.getValue());
}
return props;
}
+ public void setProperties(Properties props) {
+ this.properties.clear();
+ for (String key:props.stringPropertyNames()) {
+ addProperty(key, props.getProperty(key));
+ }
+ }
+
protected List<PropertyMetadata> getPropertiesDirect(){
- return this.properties;
+ return new ListOverMap<PropertyMetadata>(this.properties, new KeyBuilder<PropertyMetadata>() {
+ @Override
+ public String getKey(PropertyMetadata entry) {
+ return entry.getName();
+ }
+ });
}
- protected void setPropertiesDirect(List<PropertyMetadata> props){
- this.properties = props;
- }
-
@Override
public String getPropertyValue(String name) {
- if (this.properties == null) {
- return null;
- }
-
- for (PropertyMetadata p:this.properties) {
- if (p.getName().equals(name)) {
- return p.getValue();
- }
- }
- return null;
+ return this.properties.get(name).getValue();
}
- public void setProperties(Properties props) {
- for (String key:props.stringPropertyNames()) {
- addProperty(key, props.getProperty(key));
- }
- }
-
public void addProperty(String key, String value) {
- if (this.properties == null) {
- this.properties = new ArrayList<PropertyMetadata>();
- }
- this.properties.add(new PropertyMetadata(key, value));
+ this.properties.put(key, new PropertyMetadata(key, value));
}
/**
Deleted: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -1,164 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-package org.teiid.adminapi.impl;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.jboss.managed.api.annotation.ManagementObject;
-
-
-/**
- * <pre>
- * <complexType>
- * <complexContent>
- * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- * <sequence>
- * <element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
- * <element name="resource-name" type="{http://www.w3.org/2001/XMLSchema}string"/>
- * <element name="allow-create" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
- * <element name="allow-read" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
- * <element name="allow-update" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
- * <element name="allow-delete" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
- * <choice minOccurs="0">
- * <element name="security-role-name" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
- * <element name="security-role-ref" type="{http://www.w3.org/2001/XMLSchema}string"/>
- * </choice>
- * </sequence>
- * <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- * </restriction>
- * </complexContent>
- * </complexType>
- * </pre>
- *
- */
- at XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "", propOrder = {
- "description",
- "resourceName",
- "allowCreate",
- "allowRead",
- "allowUpdate",
- "allowDelete",
- "securityRoleNames",
- "securityRoleRef"
-})
- at ManagementObject
-public class DataRoleMetadata implements Serializable {
-
- @XmlAttribute(name = "name", required = true)
- protected String name;
- @XmlElement(name = "description")
- protected String description;
- @XmlElement(name = "resource-name", required = true)
- protected String resourceName;
- @XmlElement(name = "allow-create")
- protected Boolean allowCreate;
- @XmlElement(name = "allow-read")
- protected Boolean allowRead;
- @XmlElement(name = "allow-update")
- protected Boolean allowUpdate;
- @XmlElement(name = "allow-delete")
- protected Boolean allowDelete;
- @XmlElement(name = "security-role-name")
- protected List<String> securityRoleNames;
- @XmlElement(name = "security-role-ref")
- protected String securityRoleRef;
-
- public String getName() {
- return name;
- }
-
- public void setName(String value) {
- this.name = value;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String value) {
- this.description = value;
- }
-
- public String getResourceName() {
- return resourceName;
- }
-
- public void setResourceName(String value) {
- this.resourceName = value;
- }
-
- public Boolean isAllowCreate() {
- return allowCreate;
- }
-
- public void setAllowCreate(Boolean value) {
- this.allowCreate = value;
- }
-
- public Boolean isAllowRead() {
- return allowRead;
- }
-
- public void setAllowRead(Boolean value) {
- this.allowRead = value;
- }
-
- public Boolean isAllowUpdate() {
- return allowUpdate;
- }
-
- public void setAllowUpdate(Boolean value) {
- this.allowUpdate = value;
- }
-
- public Boolean isAllowDelete() {
- return allowDelete;
- }
-
- public void setAllowDelete(Boolean value) {
- this.allowDelete = value;
- }
-
- public List<String> getSecurityRoleNames() {
- if (this.securityRoleNames == null) {
- this.securityRoleNames = new ArrayList<String>();
- }
- return this.securityRoleNames;
- }
-
- public String getSecurityRoleRef() {
- return securityRoleRef;
- }
-
- public void setSecurityRoleRef(String value) {
- this.securityRoleRef = value;
- }
-}
Added: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ListOverMap.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ListOverMap.java (rev 0)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ListOverMap.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright (C) 2008 Red Hat, Inc.
+ * Copyright (C) 2000-2007 MetaMatrix, Inc.
+ * Licensed to Red Hat, Inc. under one or more contributor
+ * license agreements. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+package org.teiid.adminapi.impl;
+
+import java.util.AbstractList;
+import java.util.LinkedHashMap;
+import java.util.Set;
+
+final class ListOverMap<E> extends AbstractList<E> {
+
+ private LinkedHashMap<String, E> parent;
+ private KeyBuilder builder;
+
+ public ListOverMap(LinkedHashMap<String, E> parent, KeyBuilder builder) {
+ this.parent = parent;
+ this.builder = builder;
+ }
+
+ @Override
+ public void add(int index, E element) {
+ this.parent.put(builder.getKey(element), element);
+ }
+
+ @Override
+ public E remove(int index) {
+ String key = getKey(index);
+ if (key == null) {
+ throw new IndexOutOfBoundsException("Index: "+index+", Size: "+size());
+ }
+ return this.parent.remove(key);
+ }
+
+ @Override
+ public E get(int index) {
+ String key = getKey(index);
+ if (key == null) {
+ throw new IndexOutOfBoundsException("Index: "+index+", Size: "+size());
+ }
+ return this.parent.get(key);
+ }
+
+ private String getKey(int index) {
+ Set<String> keys = this.parent.keySet();
+ int i = 0;
+ for (String key:keys) {
+ if (i == index) {
+ return key;
+ }
+ i++;
+ }
+ return null;
+ }
+
+ @Override
+ public int size() {
+ return this.parent.size();
+ }
+}
+
+interface KeyBuilder<E> {
+ String getKey(E entry);
+}
+
Property changes on: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ListOverMap.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -22,7 +22,6 @@
package org.teiid.adminapi.impl;
-import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -41,52 +40,37 @@
import com.metamatrix.core.vdb.ModelType;
-/**
- * <pre>
- * <complexType>
- * <complexContent>
- * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- * <sequence>
- * <element name="property" type="{}property" maxOccurs="unbounded" minOccurs="0"/>
- * <choice minOccurs="0">
- * <element name="connector-name" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
- * <element name="connector-ref" type="{http://www.w3.org/2001/XMLSchema}string"/>
- * </choice>
- * </sequence>
- * <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- * </restriction>
- * </complexContent>
- * </complexType>
- * </pre>
- *
- */
+
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "", propOrder = {
"propertiesDirect",
- "connectorBindings",
"connectorReference"
})
@ManagementObject(componentType=@ManagementComponent(type="teiid",subtype="model"))
public class ModelMetaData extends AdminObjectImpl implements Model {
private static final String SUPPORTS_MULTI_SOURCE_BINDINGS_KEY = "supports-multi-source-bindings"; //$NON-NLS-1$
- private static final String VISIBILITY_KEY = "visibility"; //$NON-NLS-1$
private static final long serialVersionUID = 3714234763056162230L;
- @XmlElement(name = "connector-name")
- private List<String> connectorBindings = new ArrayList<String>();
+ @XmlElement(name = "connector-ref")
+ private String connectorReference;
- @XmlElement(name = "connector-ref")
- protected String connectorReference;
-
- @XmlAttribute(name = "type", required = true)
+ @XmlAttribute(name = "type", required = true)
private String modelType; //$NON-NLS-1$
- private String modelURI = ""; //$NON-NLS-1$
+ @XmlAttribute(name = "uri")
+ private String modelURI; //$NON-NLS-1$
+
+ @XmlAttribute(name = "path")
private String path;
+
+ @XmlAttribute(name = "uuid")
private String uuid;
+ @XmlAttribute(name = "visible")
+ private Boolean visible = true;
+
@ManagementProperty(description="Model Name", readOnly=true)
@ManagementObjectID(type="model")
@XmlAttribute(name = "name", required = true)
@@ -99,21 +83,6 @@
super.setName(name);
}
- @ManagementProperty(description="Connector Bindings for model")
- public List<String> getConnectorBindingNames(){
- return this.connectorBindings;
- }
-
- @ManagementProperty(description="Connector Binding Reference")
- public String getConnectorReference() {
- return connectorReference;
- }
-
-
- public void setConnectorReference(String connectorReference) {
- this.connectorReference = connectorReference;
- }
-
@Override
@ManagementProperty(description = "Is Model Source model", readOnly=true)
public boolean isSource() {
@@ -126,7 +95,7 @@
@Override
@ManagementProperty(description = "Is Model Visible", readOnly=true)
public boolean isVisible() {
- return getVisibility() == Visibility.PUBLIC;
+ return this.visible;
}
@Override
@@ -172,21 +141,6 @@
return super.getPropertiesDirect();
}
- // This is needed by the JAXB
- protected void setPropertiesDirect(List<PropertyMetadata> props){
- super.setPropertiesDirect(props);
- }
-
- public void addConnectorBinding(String binding) {
- this.connectorBindings.add(binding);
- }
-
- public void setConnectorBinding(List<String> bindings) {
- this.connectorBindings.clear();
- this.connectorBindings.addAll(bindings);
- }
-
-
public void setSupportsMultiSourceBindings(boolean supports) {
addProperty(SUPPORTS_MULTI_SOURCE_BINDINGS_KEY, Boolean.toString(supports));
}
@@ -208,19 +162,31 @@
}
public String toString() {
- return getName() + connectorBindings;
+ if (this.connectorReference != null)
+ return getName() + "["+this.connectorReference+"]";
+
+ return getName();
}
public Visibility getVisibility(){
- String visibility = getPropertyValue(VISIBILITY_KEY);
- if (visibility != null) {
- Visibility v = Visibility.valueOf(visibility);
- return v;
- }
- return Visibility.PUBLIC;
+ return this.visible?Visibility.PUBLIC:Visibility.PRIVATE;
}
- public void setVisibility(Visibility visibility) {
- addProperty(VISIBILITY_KEY, visibility.name());
+ public void setVisibility(Visibility visibility){
+ this.visible = (visibility == Visibility.PUBLIC);
+ }
+
+ public void setVisible(Boolean value) {
+ this.visible = value;
}
+
+ @Override
+ @ManagementProperty(description = "Connector Binding Reference Name", readOnly=true)
+ public String getConnectorReference() {
+ return connectorReference;
+ }
+
+ public void setConnectorReference(String refName) {
+ this.connectorReference = refName;
+ }
}
Added: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java (rev 0)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -0,0 +1,111 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+package org.teiid.adminapi.impl;
+
+import java.lang.reflect.Type;
+import java.util.Properties;
+
+import org.jboss.metatype.api.types.CompositeMetaType;
+import org.jboss.metatype.api.types.MetaType;
+import org.jboss.metatype.api.types.PropertiesMetaType;
+import org.jboss.metatype.api.types.SimpleMetaType;
+import org.jboss.metatype.api.values.CompositeValue;
+import org.jboss.metatype.api.values.CompositeValueSupport;
+import org.jboss.metatype.api.values.MetaValue;
+import org.jboss.metatype.api.values.MetaValueFactory;
+import org.jboss.metatype.api.values.PropertiesMetaValue;
+import org.jboss.metatype.api.values.SimpleValueSupport;
+import org.jboss.metatype.plugins.types.MutableCompositeMetaType;
+import org.jboss.metatype.spi.values.MetaMapper;
+
+public class ModelMetadataMapper extends MetaMapper<ModelMetaData> {
+ private static final MutableCompositeMetaType metaType;
+ private static final MetaValueFactory metaValueFactory = MetaValueFactory.getInstance();
+
+ static {
+ metaType = new MutableCompositeMetaType(ModelMetaData.class.getName(), "The Model meta data");
+ metaType.addItem("connectorReference", "connectorReference", SimpleMetaType.STRING);
+ metaType.addItem("modelType", "modelType", SimpleMetaType.STRING);
+ metaType.addItem("modelURI", "modelURI", SimpleMetaType.STRING);
+ metaType.addItem("path", "path", SimpleMetaType.STRING);
+ metaType.addItem("uuid", "uuid", SimpleMetaType.STRING);
+ metaType.addItem("visible", "visible", SimpleMetaType.BOOLEAN_PRIMITIVE);
+ metaType.addItem("name", "name", SimpleMetaType.STRING);
+ metaType.addItem("properties", "properties", PropertiesMetaType.INSTANCE);
+ metaType.freeze();
+ }
+
+ @Override
+ public Type mapToType() {
+ return ModelMetaData.class;
+ }
+
+ @Override
+ public MetaType getMetaType() {
+ return metaType;
+ }
+
+ @Override
+ public MetaValue createMetaValue(MetaType metaType, ModelMetaData object) {
+ if (object == null)
+ return null;
+ if (metaType instanceof CompositeMetaType) {
+ CompositeMetaType composite = (CompositeMetaType) metaType;
+ CompositeValueSupport request = new CompositeValueSupport(composite);
+
+ request.set("connectorReference", SimpleValueSupport.wrap(object.getConnectorReference()));
+ request.set("modelType", SimpleValueSupport.wrap(object.getModelType()));
+ request.set("modelURI", SimpleValueSupport.wrap(object.getModelURI()));
+ request.set("path", SimpleValueSupport.wrap(object.getPath()));
+ request.set("uuid", SimpleValueSupport.wrap(object.getUuid()));
+ request.set("visible", SimpleValueSupport.wrap(object.isVisible()));
+ request.set("name",SimpleValueSupport.wrap(object.getName()));
+ request.set("properties", new PropertiesMetaValue(object.getProperties()));
+
+ return request;
+ }
+ throw new IllegalArgumentException("Cannot convert request " + object);
+ }
+
+ @Override
+ public ModelMetaData unwrapMetaValue(MetaValue metaValue) {
+ if (metaValue == null)
+ return null;
+
+ if (metaValue instanceof CompositeValue) {
+ CompositeValue compositeValue = (CompositeValue) metaValue;
+
+ ModelMetaData model = new ModelMetaData();
+ model.setConnectorReference((String) metaValueFactory.unwrap(compositeValue.get("connectorReference")));
+ model.setModelType((String) metaValueFactory.unwrap(compositeValue.get("modelType")));
+ model.setModelURI((String) metaValueFactory.unwrap(compositeValue.get("modelURI")));
+ model.setPath((String) metaValueFactory.unwrap(compositeValue.get("path")));
+ model.setUuid((String) metaValueFactory.unwrap(compositeValue.get("sourceRequest")));
+ model.setVisible((Boolean) metaValueFactory.unwrap(compositeValue.get("visible")));
+ model.setName((String) metaValueFactory.unwrap(compositeValue.get("name")));
+ model.setProperties((Properties) metaValueFactory.unwrap(compositeValue.get("properties")));
+ return model;
+ }
+ throw new IllegalStateException("Unable to unwrap request " + metaValue);
+ }
+
+}
Property changes on: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ReferenceMappingMetadata.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ReferenceMappingMetadata.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ReferenceMappingMetadata.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -30,6 +30,7 @@
import javax.xml.bind.annotation.XmlType;
import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperty;
/**
@@ -39,7 +40,7 @@
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="ref-name" type="{http://www.w3.org/2001/XMLSchema}string"/>
- * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ * <element name="resource-name" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
* </sequence>
* </restriction>
* </complexContent>
@@ -51,7 +52,7 @@
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "reference-mapping", propOrder = {
"refName",
- "names"
+ "resourceNames"
})
@ManagementObject
public class ReferenceMappingMetadata implements Serializable {
@@ -59,9 +60,23 @@
@XmlElement(name = "ref-name", required = true)
protected String refName;
- @XmlElement(name = "name", required = true)
- protected List<String> names;
+ @XmlElement(name = "resource-name", required = true)
+ protected List<String> resourceNames;
+ public ReferenceMappingMetadata() {
+ }
+
+ public ReferenceMappingMetadata(String refName, String resourceName) {
+ setRefName(refName);
+ addResourceName(resourceName);
+ }
+
+ public ReferenceMappingMetadata(String refName, List<String> resourceNames) {
+ setRefName(refName);
+ this.resourceNames = new ArrayList<String>(resourceNames);
+ }
+
+ @ManagementProperty(description="Reference Name", readOnly=true)
public String getRefName() {
return refName;
}
@@ -70,14 +85,46 @@
this.refName = value;
}
- public List<String> getNames() {
- if (this.names == null) {
- this.names = new ArrayList<String>();
+ public List<String> getResourceNames() {
+ if (this.resourceNames == null) {
+ this.resourceNames = new ArrayList<String>();
}
- return this.names;
+ return this.resourceNames;
}
- public void addName(String name) {
- getNames().add(name);
+ @ManagementProperty(description="Resource Names")
+ public void setResourceNames(List<String> names) {
+ this.resourceNames = new ArrayList<String>(names);
}
+
+ public void addResourceName(String name) {
+ getResourceNames().add(name);
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((refName == null) ? 0 : refName.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ReferenceMappingMetadata other = (ReferenceMappingMetadata) obj;
+ if (refName == null) {
+ if (other.refName != null)
+ return false;
+ } else if (!refName.equals(other.refName))
+ return false;
+ return true;
+ }
+
+
}
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -21,9 +21,11 @@
*/
package org.teiid.adminapi.impl;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Properties;
import java.util.Set;
@@ -34,6 +36,7 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
import org.jboss.managed.api.annotation.ManagementComponent;
import org.jboss.managed.api.annotation.ManagementObject;
@@ -41,7 +44,6 @@
import org.jboss.managed.api.annotation.ManagementOperation;
import org.jboss.managed.api.annotation.ManagementProperty;
import org.teiid.adminapi.VDB;
-import org.teiid.adminapi.Visibility;
import com.metamatrix.core.CoreConstants;
import com.metamatrix.core.vdb.ModelType;
@@ -51,10 +53,10 @@
@XmlType(name = "", propOrder = {
"description",
"propertiesDirect",
- "models",
+ "modelsDirect",
"connectorMappings",
- "dataRoles",
- "securityRoleMappings"
+ "securityRoleMappings",
+ "problemMarkers"
})
@XmlRootElement(name = "vdb")
public class VDBMetaData extends AdminObjectImpl implements VDB {
@@ -62,8 +64,7 @@
private static final long serialVersionUID = -4723595252013356436L;
- @XmlElement(name = "model", required = true, type = ModelMetaData.class)
- private HashSet<ModelMetaData> models = new HashSet<ModelMetaData>();
+ private LinkedHashMap<String, ModelMetaData> models = new LinkedHashMap<String, ModelMetaData>();
@XmlAttribute(name = "version", required = true)
private int version = 1;
@@ -74,25 +75,26 @@
@XmlElement(name = "connector-mapping")
protected List<ReferenceMappingMetadata> connectorMappings;
- @XmlElement(name = "data-role")
- protected List<DataRoleMetadata> dataRoles;
-
@XmlElement(name = "security-role-mapping")
protected List<ReferenceMappingMetadata> securityRoleMappings;
+
+ @XmlElement(name = "problem-marker")
+ protected List<ProblemMarker> problemMarkers;
- private List<String> errors;
private String fileUrl = null;
public VDBMetaData() {
// auto add sytem model.
ModelMetaData system = new ModelMetaData();
system.setName(CoreConstants.SYSTEM_MODEL);
- system.setVisibility(Visibility.PUBLIC);
+ system.setVisible(true);
system.setModelType(ModelType.getString(ModelType.PHYSICAL));
- system.addConnectorBinding("system");
+ system.setConnectorReference("system");
system.setSupportsMultiSourceBindings(false);
system.setPath("builtin");
+ addConnectorMapping(new ReferenceMappingMetadata("system", "system"));
+
addModel(system);
}
@@ -109,7 +111,7 @@
}
@Override
- @ManagementProperty(description="VDB Status", readOnly=true)
+ @ManagementProperty(description="VDB Status")
public Status getStatus() {
String status = getPropertyValue(STATUS_KEY);
if (status != null) {
@@ -141,14 +143,29 @@
public void setUrl(String url) {
this.fileUrl = url;
}
+
+ @ManagementProperty(description="Model list in a VDB", managed=true)
+ public List<ModelMetaData> getModels(){
+ return new ArrayList<ModelMetaData>(this.models.values());
+ }
- @ManagementProperty(description="Model list in a VDB", managed=true)
- public Set<ModelMetaData> getModels(){
- return models;
+ /**
+ * This simulating a list over a map. JAXB requires a list and performance recommends
+ * map and we would like to keep one variable to represent both.
+ * @return
+ */
+ @XmlElement(name = "model", required = true, type = ModelMetaData.class)
+ protected List<ModelMetaData> getModelsDirect(){
+ return new ListOverMap(this.models, new KeyBuilder<ModelMetaData>() {
+ @Override
+ public String getKey(ModelMetaData entry) {
+ return entry.getName();
+ }
+ });
}
public void addModel(ModelMetaData m) {
- this.models.add(m);
+ this.models.put(m.getName(), m);
}
@Override
@@ -164,23 +181,18 @@
@Override
@ManagementProperty(description = "VDB validity errors", readOnly=true)
public List<String> getValidityErrors(){
- if (this.errors != null) {
- return this.errors;
+ if (this.problemMarkers != null && !this.problemMarkers.isEmpty()) {
+ List<String> errors = new ArrayList<String>();
+ for (ProblemMarker m:this.problemMarkers) {
+ if (m.getSeverity().equalsIgnoreCase("ERROR")) {
+ errors.add(m.getValue());
+ }
+ }
+ return errors;
}
return Collections.EMPTY_LIST;
}
- public void addValidityError(String error) {
- if (this.errors == null) {
- errors = new ArrayList<String>();
- }
- this.errors.add(error);
- }
-
- public void setValidityErrors(ArrayList<String> errors) {
- this.errors = errors;
- }
-
@Override
@ManagementProperty(description = "Is VDB Valid", readOnly=true)
public boolean isValid() {
@@ -191,33 +203,34 @@
if (getModels().isEmpty()) {
return false;
}
- for(ModelMetaData m:getModels()) {
- if (m.isSource()) {
- if (m.getConnectorBindingNames().isEmpty()) {
- return false;
- }
- }
- }
+ for(ModelMetaData m: this.models.values()) {
+ if (m.isSource()) {
+ String connectorReference = m.getConnectorReference();
+ if (connectorReference == null) {
+ return false;
+ }
+
+ List<String> resourceNames = getConnectorBindingNames(connectorReference);
+ if (resourceNames.isEmpty()) {
+ return false;
+ }
+ }
+ }
return true;
}
public String toString() {
- return getName() + models;
+ return getName()+"."+getVersion()+ models;
}
@ManagementOperation(description = "Get the model with given name")
public ModelMetaData getModel(String modelName) {
- for(ModelMetaData m: models) {
- if (m.getName().equalsIgnoreCase(modelName)) {
- return m;
- }
- }
- return null;
+ return this.models.get(modelName);
}
public Set<String> getMultiSourceModelNames(){
Set<String> list = new HashSet<String>();
- for(ModelMetaData m: models) {
+ for(ModelMetaData m: models.values()) {
if (m.isSupportsMultiSourceBindings()) {
list.add(m.getName());
}
@@ -225,10 +238,22 @@
return list;
}
- @ManagementProperty(description="Connector reference mappings", managed=true)
+ @ManagementProperty(description="Connector reference mappings")
public List<ReferenceMappingMetadata> getConnectorMappings() {
return this.connectorMappings;
}
+
+ public List<String> getConnectorBindingNames(String referenceName) {
+ if (this.connectorMappings == null) {
+ return Collections.EMPTY_LIST;
+ }
+ for (ReferenceMappingMetadata data:this.connectorMappings) {
+ if (data.getRefName().equals(referenceName)) {
+ return data.getResourceNames();
+ }
+ }
+ return Collections.EMPTY_LIST;
+ }
public void addConnectorMapping(ReferenceMappingMetadata data) {
if (this.connectorMappings == null) {
@@ -237,7 +262,7 @@
this.connectorMappings.add(data);
}
- @ManagementProperty(description="Security refrence mappings", managed=true)
+ @ManagementProperty(description="Security refrence mappings")
public List<ReferenceMappingMetadata> getSecurityRoleMappings() {
return securityRoleMappings;
}
@@ -249,21 +274,58 @@
this.securityRoleMappings.add(data);
}
+ // this one manages the Management API
@Override
@ManagementProperty(description = "Properties", readOnly=true)
public Properties getProperties() {
- return new Properties(super.getProperties());
+ return super.getProperties();
}
+ // This one manages the JAXB binding
@Override
@XmlElement(name = "property", type = PropertyMetadata.class)
protected List<PropertyMetadata> getPropertiesDirect(){
return super.getPropertiesDirect();
}
- // This is needed by the JAXB
- protected void setPropertiesDirect(List<PropertyMetadata> props){
- super.setPropertiesDirect(props);
- }
-
+ public void addProblemMarker(String severity, String message) {
+ if (this.problemMarkers == null) {
+ this.problemMarkers = new ArrayList<ProblemMarker>();
+ }
+ this.problemMarkers.add(new ProblemMarker(severity, message));
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class ProblemMarker implements Serializable{
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "severity")
+ protected String severity;
+
+ public ProblemMarker() {};
+
+ public ProblemMarker(String severity, String msg) {
+ this.severity = severity;
+ this.value = msg;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getSeverity() {
+ return severity;
+ }
+
+ public void setSeverity(String value) {
+ this.severity = value;
+ }
+ }
}
Modified: branches/JCA/client/src/main/resources/vdb-deployer.xsd
===================================================================
--- branches/JCA/client/src/main/resources/vdb-deployer.xsd 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/main/resources/vdb-deployer.xsd 2010-03-01 20:45:58 UTC (rev 1882)
@@ -12,34 +12,27 @@
<xs:complexType>
<xs:sequence>
<xs:element name="property" type="property" minOccurs="0" maxOccurs="unbounded"/>
- <xs:choice minOccurs="0">
- <xs:element name="connector-name" type="xs:string" maxOccurs="unbounded"/>
- <xs:element name="connector-ref" type="xs:string"/>
- </xs:choice>
+ <xs:element name="connector-ref" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
+ <xs:attribute name="uri" type="xs:string"/>
+ <xs:attribute name="path" type="xs:string"/>
+ <xs:attribute name="visibility" type="xs:string"/>
+ <xs:attribute name="uuid" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="connector-mapping" type="reference-mapping" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="data-role" minOccurs="0" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="resource-name" type="xs:string"/>
- <xs:element name="allow-create" type="xs:boolean" minOccurs="0"/>
- <xs:element name="allow-read" type="xs:boolean" minOccurs="0"/>
- <xs:element name="allow-update" type="xs:boolean" minOccurs="0"/>
- <xs:element name="allow-delete" type="xs:boolean" minOccurs="0"/>
- <xs:choice minOccurs="0">
- <xs:element name="security-role-name" type="xs:string" maxOccurs="unbounded"/>
- <xs:element name="security-role-ref" type="xs:string"/>
- </xs:choice>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- </xs:complexType>
- </xs:element>
<xs:element name="security-role-mapping" type="reference-mapping" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="problem-marker" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="severity" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="version" type="xs:int" use="required"/>
@@ -55,7 +48,7 @@
<xs:complexType name="reference-mapping">
<xs:sequence>
<xs:element name="ref-name" type="xs:string"/>
- <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ <xs:element name="resource-name" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Modified: branches/JCA/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java
===================================================================
--- branches/JCA/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -25,6 +25,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
import java.io.StringReader;
import java.io.StringWriter;
@@ -49,9 +50,11 @@
ModelMetaData modelOne = new ModelMetaData();
modelOne.setName("model-one");
- modelOne.addConnectorBinding("java:mybinding");
+ modelOne.setConnectorReference("java:mybinding");
modelOne.setModelType("physical");
modelOne.addProperty("model-prop", "model-value");
+ modelOne.addProperty("model-prop", "model-value-override");
+ modelOne.setVisible(false);
vdb.addModel(modelOne);
@@ -65,10 +68,12 @@
ReferenceMappingMetadata ref = new ReferenceMappingMetadata();
ref.setRefName("binding-two-ref");
- ref.addName("java:binding-one");
- ref.addName("java:binding-two");
+ ref.addResourceName("java:binding-one");
+ ref.addResourceName("java:binding-two");
vdb.addConnectorMapping(ref);
+ vdb.addProblemMarker("ERROR", "There is an error in VDB");
+
JAXBContext jc = JAXBContext.newInstance(new Class<?>[] {VDBMetaData.class});
Marshaller marshell = jc.createMarshaller();
marshell.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,new Boolean(true));
@@ -92,24 +97,28 @@
modelOne = vdb.getModel("model-one");
assertEquals("model-one", modelOne.getName());
- assertTrue(modelOne.getConnectorBindingNames().contains("java:mybinding"));
+ assertEquals("java:mybinding", modelOne.getConnectorReference());
assertEquals("physical", modelOne.getModelType());
- assertEquals("model-value", modelOne.getPropertyValue("model-prop"));
+ assertEquals("model-value-override", modelOne.getPropertyValue("model-prop"));
+ assertFalse(modelOne.isVisible());
modelTwo = vdb.getModel("model-two");
assertEquals("model-two", modelTwo.getName());
- assertTrue(modelTwo.getConnectorBindingNames().isEmpty());
assertEquals("binding-two-ref", modelTwo.getConnectorReference());
assertEquals("virtual", modelTwo.getModelType()); // this is not persisted in the XML
assertEquals("model-value", modelTwo.getPropertyValue("model-prop"));
- assertTrue(vdb.getConnectorMappings().size()==1);
- ref = vdb.getConnectorMappings().get(0);
+ assertTrue(vdb.getConnectorMappings().size()==2);
+ ref = vdb.getConnectorMappings().get(1);
assertEquals("binding-two-ref", ref.getRefName());
- assertTrue(ref.getNames().contains("java:binding-one"));
- assertTrue(ref.getNames().contains("java:binding-two"));
+ assertTrue(ref.getResourceNames().contains("java:binding-one"));
+ assertTrue(ref.getResourceNames().contains("java:binding-two"));
+ assertEquals(2, vdb.getConnectorBindingNames("binding-two-ref").size());
+ assertTrue(vdb.getConnectorBindingNames("binding-two-ref").contains("java:binding-one"));
+
+ assertTrue(vdb.getValidityErrors().contains("There is an error in VDB"));
}
}
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -69,7 +69,7 @@
ConnectorException exception = null;
VDBMetaData vdb = workContext.getVDB();
ModelMetaData model = vdb.getModel(modelName);
- for (String binding:model.getConnectorBindingNames()) {
+ for (String binding:vdb.getConnectorBindingNames(model.getConnectorReference())) {
try {
ConnectorManager mgr = this.connectorRepo.getConnectorManager(binding);
caps = mgr.getCapabilities();
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -344,7 +344,7 @@
if (connectorBindingId == null) {
VDBMetaData vdb = workItem.getDqpWorkContext().getVDB();
ModelMetaData model = vdb.getModel(modelName);
- List<String> bindings = model.getConnectorBindingNames();
+ List<String> bindings = vdb.getConnectorBindingNames(model.getConnectorReference());
if (bindings == null || bindings.size() != 1) {
// this should not happen, but it did occur when setting up the SystemAdmin models
throw new MetaMatrixComponentException(DQPPlugin.Util.getString("DataTierManager.could_not_obtain_connector_binding", new Object[]{modelName, workItem.getDqpWorkContext().getVdbName(), workItem.getDqpWorkContext().getVdbVersion() })); //$NON-NLS-1$
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -27,6 +27,7 @@
import java.util.Set;
import org.teiid.adminapi.impl.ModelMetaData;
+import org.teiid.adminapi.impl.VDBMetaData;
import org.teiid.dqp.internal.process.DQPWorkContext;
import com.metamatrix.api.exception.MetaMatrixComponentException;
@@ -84,10 +85,11 @@
return accessNode;
}
- ModelMetaData model = workContext.getVDB().getModel(modelName);
+ VDBMetaData vdb = workContext.getVDB();
+ ModelMetaData model = vdb.getModel(modelName);
List<AccessNode> accessNodes = new ArrayList<AccessNode>();
- for(String bindingName:model.getConnectorBindingNames()) {
+ for(String bindingName:vdb.getConnectorBindingNames(model.getConnectorReference())) {
// Create a new cloned version of the access node and set it's model name to be the bindingUUID
AccessNode instanceNode = (AccessNode) accessNode.clone();
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -160,7 +160,7 @@
}
model.setVisibility(Visibility.PUBLIC);
model.setSupportsMultiSourceBindings(false);
- model.addConnectorBinding(name);
+ model.setConnectorReference(name);
return model;
}
@@ -2539,6 +2539,7 @@
model.setVisibility(Visibility.PUBLIC);
model.setSupportsMultiSourceBindings(true);
+ model.setConnectorReference("refname");
vdb.addModel(model);
vdb.addModel(createModel("Virt", false));
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -65,7 +65,8 @@
VDBMetaData vdb = Mockito.mock(VDBMetaData.class);
ModelMetaData model = Mockito.mock(ModelMetaData.class);
Mockito.stub(vdb.getModel(modelName)).toReturn(model);
- Mockito.stub(model.getConnectorBindingNames()).toReturn(bindings);
+ Mockito.stub(model.getConnectorReference()).toReturn("ref-name");
+ Mockito.stub(vdb.getConnectorBindingNames("ref-name")).toReturn(bindings);
workContext.setVdb(vdb);
BasicSourceCapabilities basicSourceCapabilities = new BasicSourceCapabilities();
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -25,6 +25,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
@@ -33,6 +34,8 @@
import java.util.Set;
import org.junit.Test;
+import org.teiid.adminapi.impl.ModelMetaData;
+import org.teiid.adminapi.impl.ReferenceMappingMetadata;
import org.teiid.adminapi.impl.VDBMetaData;
import org.teiid.dqp.internal.process.DQPWorkContext;
@@ -98,11 +101,13 @@
for (String model:multiSourceModels) {
char sourceID = 'a';
// by default every model has one binding associated, but for multi-source there were none assigned.
- int x = vdb.getModel(model).getConnectorBindingNames().size();
+ ModelMetaData m = vdb.getModel(model);
+ int x = vdb.getConnectorBindingNames(m.getConnectorReference()).size();
+ ArrayList<String> names = new ArrayList<String>();
for(int i=x; i<sourceCount; i++, sourceID++) {
- vdb.getModel(model).addConnectorBinding("" + sourceID);
+ names.add("" + sourceID);
}
-
+ vdb.addConnectorMapping(new ReferenceMappingMetadata(m.getConnectorReference(), names));
}
MultiSourceMetadataWrapper wrapper = new MultiSourceMetadataWrapper(metadata, multiSourceModels);
Modified: branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
===================================================================
--- branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -47,8 +47,11 @@
import org.jboss.managed.api.ManagedComponent;
import org.jboss.managed.api.ManagedDeployment;
import org.jboss.managed.api.ManagedProperty;
+import org.jboss.metatype.api.types.CollectionMetaType;
import org.jboss.metatype.api.types.MapCompositeMetaType;
+import org.jboss.metatype.api.types.SimpleMetaType;
import org.jboss.metatype.api.values.CollectionValueSupport;
+import org.jboss.metatype.api.values.CompositeValueSupport;
import org.jboss.metatype.api.values.MapCompositeValueSupport;
import org.jboss.metatype.api.values.MetaValue;
import org.jboss.metatype.api.values.MetaValueFactory;
@@ -69,7 +72,6 @@
import org.teiid.adminapi.TeiidAdmin;
import org.teiid.adminapi.Transaction;
import org.teiid.adminapi.VDB;
-import org.teiid.adminapi.Visibility;
import org.teiid.adminapi.WorkerPoolStatistics;
import org.teiid.adminapi.impl.ConnectionPoolStatisticsMetadata;
import org.teiid.adminapi.impl.ConnectorBindingMetaData;
@@ -339,11 +341,11 @@
@Override
public Collection<ConnectorBinding> getConnectorBindingsInVDB(String vdbName, int vdbVersion) throws AdminException {
HashMap<String, ConnectorBinding> bindingMap = new HashMap<String, ConnectorBinding>();
- VDB vdb = getVDB(vdbName, vdbVersion);
+ VDBMetaData vdb = (VDBMetaData) getVDB(vdbName, vdbVersion);
if (vdb != null) {
for (Model model:vdb.getModels()) {
if (model.isSource()) {
- for (String bindingName : model.getConnectorBindingNames()) {
+ for (String bindingName : vdb.getConnectorBindingNames(model.getConnectorReference())) {
ConnectorBinding binding = getConnectorBinding(bindingName);
if (binding != null) {
bindingMap.put(bindingName, binding);
@@ -439,7 +441,7 @@
}
}
- private VDB buildVDB(ManagedComponent mc) {
+ private VDBMetaData buildVDB(ManagedComponent mc) {
VDBMetaData vdb = new VDBMetaData();
vdb.setName(ManagedUtil.getSimpleValue(mc, "name", String.class));
vdb.setDescription(ManagedUtil.getSimpleValue(mc, "description", String.class));
@@ -449,7 +451,9 @@
ArrayList<String> errors = new ArrayList<String>();
ManagedUtil.getCollectionValue(mc, "validityErrors", errors, String.class);
- vdb.setValidityErrors(errors);
+ for (String error:errors) {
+ vdb.addProblemMarker("ERROR", error);
+ }
ManagedDeployment deployment = mc.getDeployment();
Collection<ManagedComponent> models = deployment.getComponents().values();
@@ -461,6 +465,11 @@
}
}
}
+
+ // TODO: add the following
+ // ConnectorMappings
+ // SecurityRoleMappings
+
return vdb;
}
@@ -471,13 +480,10 @@
model.setModelType(ManagedUtil.getSimpleValue(mc, "modelType", String.class));
model.setPath(ManagedUtil.getSimpleValue(mc, "path", String.class));
model.setUuid(ManagedUtil.getSimpleValue(mc, "uuid", String.class));
- model.setSupportsMultiSourceBindings(ManagedUtil.getSimpleValue(mc, "supportsMultiSourceBindings", Boolean.class));
- model.setVisibility(Visibility.valueOf(ManagedUtil.getSimpleValue(mc, "visibility", String.class)));
+ model.setVisible(ManagedUtil.getSimpleValue(mc, "visible", Boolean.class));
+ model.setConnectorReference(ManagedUtil.getSimpleValue(mc, "connectorReference", String.class));
+ model.setProperties(ManagedUtil.getPropertiesValue(mc, "properties"));
- ArrayList<String> bindings = new ArrayList<String>();
- ManagedUtil.getCollectionValue(mc, "connectorBindingNames", bindings, String.class);
- model.setConnectorBinding(bindings);
-
return model;
}
@@ -860,5 +866,50 @@
return jarFile;
}
+
+ @Override
+ public void assignBindingsToModel(String vdbName, int vdbVersion, String modelName, String[] connectorBindingNames) throws AdminException {
+ ManagedComponent mc = getVDBManagedComponent(vdbName, vdbVersion);
+ if (mc != null) {
+ VDBMetaData vdb = buildVDB(mc);
+ if (vdb == null) {
+
+ }
+
+ ModelMetaData model = vdb.getModel(modelName);
+ if (model == null) {
+ throw new AdminProcessingException("Model name = "+modelName+" not found in the VDB with name = "+vdbName + " version = "+ vdbVersion);
+ }
+
+ String referenceName = model.getConnectorReference();
+ ArrayList<MetaValue> newBindings = new ArrayList<MetaValue>();
+ for (String name:connectorBindingNames) {
+ newBindings.add(new SimpleValueSupport(SimpleMetaType.STRING, name));
+ }
+
+ ManagedProperty mappings = mc.getProperty("connectorMappings");
+ MetaValue[] elements = ((CollectionValueSupport)mappings.getValue()).getElements();
+ ArrayList<MetaValue> modifiedElements = new ArrayList<MetaValue>();
+ for (MetaValue mv:elements) {
+ MetaValue value = ((CompositeValueSupport)mv).get("refName");
+ if (value != null && ManagedUtil.stringValue(value).equals(referenceName)) {
+ CollectionValueSupport bindings = (CollectionValueSupport)((CompositeValueSupport)mv).get("resourceNames");
+ bindings.setElements(newBindings.toArray(new MetaValue[newBindings.size()]));
+ }
+ else {
+ modifiedElements.add(mv);
+ }
+ }
+
+ try {
+ getView().updateComponent(mc);
+ } catch (Exception e) {
+ throw new AdminComponentException(e.getMessage(), e);
+ }
+ }
+
+ throw new AdminProcessingException("VDB with name = "+vdbName + " version = "+ vdbVersion + " not found in configuration");
+ }
+
}
Modified: branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/ManagedUtil.java
===================================================================
--- branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/ManagedUtil.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/ManagedUtil.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -30,6 +30,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import org.jboss.deployers.spi.management.deploy.DeploymentManager;
import org.jboss.deployers.spi.management.deploy.DeploymentProgress;
@@ -37,12 +38,14 @@
import org.jboss.managed.api.ManagedComponent;
import org.jboss.managed.api.ManagedOperation;
import org.jboss.managed.api.ManagedProperty;
+import org.jboss.metatype.api.types.MapCompositeMetaType;
import org.jboss.metatype.api.types.MetaType;
import org.jboss.metatype.api.types.SimpleMetaType;
import org.jboss.metatype.api.values.CollectionValue;
import org.jboss.metatype.api.values.EnumValue;
import org.jboss.metatype.api.values.MapCompositeValueSupport;
import org.jboss.metatype.api.values.MetaValue;
+import org.jboss.metatype.api.values.PropertiesMetaValue;
import org.jboss.metatype.api.values.SimpleValue;
import org.jboss.metatype.api.values.SimpleValueSupport;
import org.jboss.profileservice.spi.DeploymentOption;
@@ -115,6 +118,28 @@
return null;
}
+ public static Properties getPropertiesValue(ManagedComponent mc, String prop) {
+ ManagedProperty mp = mc.getProperty(prop);
+ if (mp != null) {
+ MetaType metaType = mp.getMetaType();
+ if (metaType.isProperties()) {
+ return (PropertiesMetaValue)mp.getValue();
+ }
+ else if (metaType.isComposite()) {
+ Properties props = new Properties();
+ MapCompositeValueSupport map = (MapCompositeValueSupport) mp.getValue();
+ MapCompositeMetaType type = map.getMetaType();
+ for (String key : type.keySet()) {
+ MetaValue value = map.get(key);
+ props.setProperty(key, stringValue(value));
+ }
+ return props;
+ }
+ throw new IllegalStateException(prop+ " is not a properties type");
+ }
+ return null;
+ }
+
public static <T> void getCollectionValue(ManagedComponent mc, String prop, Collection<T> list, Class<T> expectedType) {
ManagedProperty mp = mc.getProperty(prop);
if (mp != null) {
Added: branches/JCA/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetadataComponentMapper.java
===================================================================
--- branches/JCA/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetadataComponentMapper.java (rev 0)
+++ branches/JCA/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetadataComponentMapper.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -0,0 +1,62 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+package org.teiid.jboss.deployers;
+
+import org.jboss.managed.api.ManagedObject;
+import org.jboss.system.server.profileservice.persistence.PersistenceFactory;
+import org.jboss.system.server.profileservice.persistence.component.AbstractComponentMapper;
+import org.jboss.system.server.profileservice.persistence.xml.PersistedComponent;
+import org.teiid.adminapi.impl.VDBMetaData;
+
+public class VDBMetadataComponentMapper extends AbstractComponentMapper {
+
+ public VDBMetadataComponentMapper(PersistenceFactory persistenceFactory) {
+ super(persistenceFactory);
+ }
+
+ @Override
+ protected ManagedObject getComponent(Object attachment, PersistedComponent component, boolean create) {
+ VDBMetaData metadata = (VDBMetaData)attachment;
+ String vdbName = metadata.getName()+"_"+metadata.getVersion();
+ if (vdbName.equals(component.getOriginalName())) {
+ return getMOF().initManagedObject(metadata, VDBMetaData.class, vdbName, vdbName);
+ }
+ throw new IllegalStateException("could not find deployment " + component.getOriginalName());
+ }
+
+ @Override
+ protected void removeComponent(Object attachment,PersistedComponent component) {
+ //TODO: What needs to be done here?
+ }
+
+ @Override
+ protected void setComponentName(PersistedComponent component, ManagedObject mo) {
+ VDBMetaData metadata = (VDBMetaData)mo.getAttachment();
+ component.setName(metadata.getName()+"_"+metadata.getVersion());
+ }
+
+ @Override
+ public String getType() {
+ return VDBMetaData.class.getName();
+ }
+
+}
Property changes on: branches/JCA/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetadataComponentMapper.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/jboss-integration/src/test/resources/TransactionsRevisited.vdb
===================================================================
(Binary files differ)
Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -77,7 +77,7 @@
}
private MetadataStore buildDynamicMetadataStore(VFSDeploymentUnit unit, VDBMetaData vdb, ModelMetaData model) throws DeploymentException{
- if (model.getConnectorBindingNames().isEmpty()) {
+ if (vdb.getConnectorBindingNames(model.getConnectorReference()).isEmpty()) {
throw new DeploymentException(vdb.getName()+"-"+vdb.getVersion()+" Can not be deployed because model {"+model.getName()+"} is not fully configured.");
}
@@ -98,7 +98,7 @@
Exception exception = null;
- for (String connectorName: model.getConnectorBindingNames()) {
+ for (String connectorName: vdb.getConnectorBindingNames(model.getConnectorReference())) {
ConnectorManager cm = this.connectorManagerRepository.getConnectorManager(connectorName);
if (cm == null) {
continue;
Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java 2010-02-28 02:38:06 UTC (rev 1881)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java 2010-03-01 20:45:58 UTC (rev 1882)
@@ -22,6 +22,7 @@
package org.teiid.deployers;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -111,9 +112,16 @@
public boolean isFullyConfiguredVDB(VDBMetaData vdb) {
for(ModelMetaData m: vdb.getModels()) {
if (m.isSource()) {
- if (m.getConnectorBindingNames().isEmpty()) {
+ String connectorReference = m.getConnectorReference();
+ if (connectorReference == null) {
+ log.warn("VDB = "+vdb.getName() +" Model = "+m.getName()+"; No Connector Reference defined");
+ }
+
+ List<String> resourceNames = vdb.getConnectorBindingNames(connectorReference);
+ if (resourceNames.isEmpty()) {
return false;
}
+ log.warn("VDB = "+vdb.getName() +" Model = "+m.getName()+"; No Connector Bindings are mapped for Connector Reference = "+connectorReference);
}
}
return true;
More information about the teiid-commits
mailing list