[teiid-commits] teiid SVN: r1894 - in branches/JCA: client/src/main/java/org/teiid/adminapi and 26 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Mar 3 18:08:20 EST 2010


Author: rareddy
Date: 2010-03-03 18:08:18 -0500 (Wed, 03 Mar 2010)
New Revision: 1894

Added:
   branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java
Removed:
   branches/JCA/client/src/main/java/org/teiid/adminapi/Visibility.java
   branches/JCA/common-internal/src/main/java/com/metamatrix/api/exception/
   branches/JCA/common-internal/src/main/java/com/metamatrix/common/config/api/
   branches/JCA/common-internal/src/main/java/com/metamatrix/common/extensionmodule/
   branches/JCA/common-internal/src/main/java/com/metamatrix/common/util/crypto/
   branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/
   branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriter.java
   branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriterImpl.java
   branches/JCA/common-internal/src/main/java/com/metamatrix/core/xml/
   branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/
   branches/JCA/common-internal/src/main/java/com/metamatrix/server/admin/api/
   branches/JCA/common-internal/src/main/java/com/metamatrix/server/admin/apiimpl/
   branches/JCA/common-internal/src/main/java/com/metamatrix/vdb/materialization/template/
   branches/JCA/jboss-integration/src/main/java/com/metamatrix/dqp/
   branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestMetaData.java
   branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestParser.java
Modified:
   branches/JCA/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
   branches/JCA/client/src/main/java/org/teiid/adminapi/Model.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/ModelMetadataMapper.java
   branches/JCA/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.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/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java
   branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.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/TestDQPCore.java
   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/validator/TestAuthorizationValidationVisitor.java
   branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.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/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
   branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
   branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java
   branches/JCA/runtime/src/main/java/org/teiid/deployers/SystemVDBDeployer.java
   branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
   branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java
   branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBStructure.java
Log:
TEIID-998: Adding changes resulting from creating the deployment from the XSD file.

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml	2010-03-03 23:08:18 UTC (rev 1894)
@@ -41,6 +41,7 @@
         <property name="managedObjectFactory"><inject bean="ManagedObjectFactory"/></property>
         <property name="VDBRepository"><inject bean="VDBRepository"/></property>
         <property name="contextCache"><inject bean="ContextCache"/></property>
+        <property name="objectSerializer"><inject bean="ObjectSerializer"/></property>
         <depends>SystemVDBDeployer</depends>
     </bean>       
     

Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/Model.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -22,14 +22,18 @@
 
 package org.teiid.adminapi;
 
+import java.util.List;
 
+
 /** 
  * Represents a metadata model in the Teiid system.
  * 
  * @since 4.3
  */
 public interface Model extends AdminObject {
-
+	
+	enum Type {PHYSICAL, VIRTUAL, FUNCTION};
+	
     /**
      * Determine if this model is a Source model.
      * 
@@ -49,15 +53,8 @@
      * Retrieve the model type.
      * @return model type
      */
-    String getModelType();
+    Type getModelType();
 
-    /**
-     * Retrieve the model URI.
-     * 
-     * @return model URI
-     */
-    String getModelURI();
-
     /** 
      * Determine whether this model can support more than one connector binding.
      * 
@@ -66,20 +63,8 @@
     boolean isSupportsMultiSourceBindings();
     
     /**
-     * Path of the model inside the VDB (optional)
+     * Associated Source Names for the Models (Connector Bindings)
      * @return String
      */
-    String getPath();
-    
-    /**
-     * UUID of the Model (optional)
-     * @return String
-     */
-    String getUuid();
-        
-    /**
-     * Associated connector binding's reference name
-     * @return String
-     */
-    String getConnectorReference();
+    List<String> getSourceNames();    
 }
\ No newline at end of file

Deleted: branches/JCA/client/src/main/java/org/teiid/adminapi/Visibility.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/Visibility.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/Visibility.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -1,28 +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;
-
-import java.io.Serializable;
-
-public enum Visibility implements Serializable{
-	PUBLIC,PRIVATE;
-}
\ No newline at end of file

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/AdminObjectImpl.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -74,7 +74,7 @@
 		}
 	}	
 	
-	protected List<PropertyMetadata> getPropertiesDirect(){
+	protected List<PropertyMetadata> getJAXBProperties(){
 		return properties;
 	}
 	

Added: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java	                        (rev 0)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -0,0 +1,137 @@
+/*
+ * 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 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>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="resource-name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="allow-create" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         &lt;element name="allow-read" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         &lt;element name="allow-update" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         &lt;element name="allow-delete" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "", propOrder = {
+    "description",
+    "resourceName",
+    "allowCreate",
+    "allowRead",
+    "allowUpdate",
+    "allowDelete",
+})
+ 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;
+
+    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;
+    }
+}


Property changes on: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/DataRoleMetadata.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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -22,6 +22,8 @@
 
 package org.teiid.adminapi.impl;
 
+import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
@@ -30,47 +32,45 @@
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 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;
 import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementProperties;
 import org.jboss.managed.api.annotation.ManagementProperty;
 import org.teiid.adminapi.Model;
-import org.teiid.adminapi.Visibility;
 
 import com.metamatrix.core.vdb.ModelType;
 
 
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlType(name = "", propOrder = {
-    "propertiesDirect",
-    "connectorReference"
+    "JAXBProperties",
+    "JAXBSources",
+    "errors"
 })
- at ManagementObject(componentType=@ManagementComponent(type="teiid",subtype="model"))
+ at ManagementObject(properties=ManagementProperties.EXPLICIT)
 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 long serialVersionUID = 3714234763056162230L;
+		
+	private ListOverMap<SourceMapping> sources = new ListOverMap(new KeyBuilder<SourceMapping>() {
+		@Override
+		public String getKey(SourceMapping entry) {
+			return entry.getName();
+		}
+	});
 	
-	@XmlElement(name = "connector-ref")
-	private String connectorReference; 
-	
-	@XmlAttribute(name = "type", required = true)
-	private String modelType; //$NON-NLS-1$
+	@XmlAttribute(name = "type")
+	protected String modelType = Type.PHYSICAL.name(); //$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;
     
+    @XmlElement(name = "validation-error")
+    protected List<ValidationError> errors;    
+    
 	@ManagementProperty(description="Model Name", readOnly=true)
 	@ManagementObjectID(type="model")
 	@XmlAttribute(name = "name", required = true)
@@ -100,17 +100,11 @@
 
 	@Override
 	@ManagementProperty(description = "Model Type", readOnly=true)
-	public String getModelType() {
-		return modelType;
+	public Type getModelType() {
+		return Type.valueOf(modelType);
 	}
 
 	@Override
-	@ManagementProperty(description = "Model URI", readOnly=true)
-	public String getModelURI() {
-		return modelURI;
-	}
-
-	@Override
 	@ManagementProperty(description = "Does Model supports multi-source bindings", readOnly=true)
     public boolean isSupportsMultiSourceBindings() {
 		String supports = getPropertyValue(SUPPORTS_MULTI_SOURCE_BINDINGS_KEY);
@@ -118,18 +112,6 @@
     }    
 	
 	@Override
-	@ManagementProperty(description = "Model path", readOnly=true)
-    public String getPath() {
-        return this.path;
-    }
-	
-	@Override
-	@ManagementProperty(description = "Model UUID", readOnly=true)
-    public String getUuid() {
-        return this.uuid;
-    }	
-        
-	@Override
 	@ManagementProperty(description = "Properties", readOnly=true)
     public Properties getProperties() {
         return new Properties(super.getProperties());
@@ -137,8 +119,8 @@
 	
 	@Override
 	@XmlElement(name = "property", type = PropertyMetadata.class)
-	protected List<PropertyMetadata> getPropertiesDirect(){
-		return super.getPropertiesDirect();
+	protected List<PropertyMetadata> getJAXBProperties(){
+		return super.getJAXBProperties();
 	}
 	
     public void setSupportsMultiSourceBindings(boolean supports) {
@@ -148,45 +130,138 @@
     public void setModelType(String modelType) {
         this.modelType = modelType;
     }
-
-    public void setModelURI(String modelURI) {
-        this.modelURI = modelURI;
-    }
     
-    public void setPath(String path) {
-        this.path = path;
-    }
-    
-    public void setUuid(String uuid) {
-        this.uuid = uuid;
-    }      
-    
     public String toString() {
-    	if (this.connectorReference != null)
-    		return getName() + "["+this.connectorReference+"]";
-    	
-    	return getName();
+		return getName() + this.sources;
     }
     
-    public Visibility getVisibility(){
-		return this.visible?Visibility.PUBLIC:Visibility.PRIVATE;
-    }  
-    
-    public void setVisibility(Visibility visibility){
-		this.visible = (visibility == Visibility.PUBLIC);
-    }     
-    
     public void setVisible(Boolean value) {
     	this.visible = value;
     }    
+
+    @ManagementProperty(description = "Source Mappings (defined by user)")
+	public List<SourceMapping> getSourceMappings(){
+		return new ArrayList<SourceMapping>(this.sources.getMap().values());
+	}
     
+	@XmlElement(name = "source")
+	protected List<SourceMapping> getJAXBSources(){
+		// do not wrap this in another List object; we need direct access for jaxb
+		return this.sources;
+	}	
+	
     @Override
-    @ManagementProperty(description = "Connector Binding Reference Name", readOnly=true)
-    public String getConnectorReference() {
-		return connectorReference;
+    public List<String> getSourceNames() {
+    	return new ArrayList<String>(this.sources.getMap().keySet());
 	}
+    
+    public String getSourceJndiName(String sourceName) {
+    	SourceMapping s = this.sources.getMap().get(sourceName);
+    	return s.getJndiName();
+	}
+    
+	public void addSourceMapping(String name, String jndiName) {
+		this.sources.getMap().put(name, new SourceMapping(name, jndiName));
+	}    
+	
+	@ManagementProperty(description = "Model Validity Errors", readOnly=true)
+	public List<ValidationError> getErrors(){
+		return this.errors;
+	}
+	
+    public void addError(String severity, String message) {
+        if (this.errors == null) {
+            this.errors = new ArrayList<ValidationError>();
+        }
+        this.errors.add(new ValidationError(severity, message));
+    }	
+	
+    @XmlAccessorType(XmlAccessType.NONE)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    @ManagementObject(properties=ManagementProperties.EXPLICIT)
+    public static class ValidationError implements Serializable{
+		private static final long serialVersionUID = 2044197069467559527L;
 
-	public void setConnectorReference(String refName) {
-		this.connectorReference = refName;
-	}    
+		public enum Severity {ERROR, WARNING};
+    	
+        @XmlValue
+        protected String value;
+        
+        @XmlAttribute(name = "severity")
+        protected String severity;
+
+        public ValidationError() {};
+        
+        public ValidationError(String severity, String msg) {
+        	this.severity = severity;
+        	this.value = msg;
+        }
+    	
+        @ManagementProperty (description="Error Message", readOnly = true)
+        public String getValue() {
+			return value;
+		}
+
+		public void setValue(String value) {
+			this.value = value;
+		}
+
+		@ManagementProperty (description="Severity", readOnly = true)
+		public String getSeverity() {
+			return severity;
+		}
+
+		public void setSeverity(String severity) {
+			this.severity = severity;
+		}        
+    }	
+    
+    @XmlAccessorType(XmlAccessType.NONE)
+    @XmlType(name = "")
+    @ManagementObject(properties=ManagementProperties.EXPLICIT)
+    public static class SourceMapping implements Serializable {
+		private static final long serialVersionUID = -4417878417697685794L;
+
+		@XmlAttribute(name = "name", required = true)
+        private String name;
+        
+        @XmlAttribute(name = "jndi-name")
+        private String jndiName;
+        
+        
+        public SourceMapping() {}
+        
+        public SourceMapping(String name, String jndiName) {
+        	this.name = name;
+        	this.jndiName = jndiName;
+        }
+
+        @ManagementProperty (description="Source Name", readOnly = true)
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			this.name = name;
+		}
+
+		@ManagementProperty (description="JNDI Name of the resource to assosiate with Source name")
+		public String getJndiName() {
+			// this default could be controlled if needed.
+			if (this.jndiName == null) {
+				return "java:"+name;
+			}
+			return jndiName;
+		}
+
+		public void setJndiName(String jndiName) {
+			this.jndiName = jndiName;
+		}
+		
+		public String toString() {
+			return getName()+":"+getJndiName();
+		}
+    }    
 }

Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ModelMetadataMapper.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -25,11 +25,12 @@
 import java.util.Properties;
 
 import org.jboss.metatype.api.types.CompositeMetaType;
+import org.jboss.metatype.api.types.MapCompositeMetaType;
 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.MapCompositeValueSupport;
 import org.jboss.metatype.api.values.MetaValue;
 import org.jboss.metatype.api.values.MetaValueFactory;
 import org.jboss.metatype.api.values.PropertiesMetaValue;
@@ -43,14 +44,13 @@
 	
 	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.addItem("visible", "visible", SimpleMetaType.BOOLEAN_PRIMITIVE);
+		metaType.addItem("modelType", "modelType", SimpleMetaType.STRING);
+		
+		
+		
+		//metaType.addItem("properties", "properties", new MapCompositeMetaType());
 		metaType.freeze();
 	}
 	
@@ -72,11 +72,7 @@
 			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("modelType", SimpleValueSupport.wrap(object.getModelType().name()));
 			request.set("visible", SimpleValueSupport.wrap(object.isVisible()));
 			request.set("name",SimpleValueSupport.wrap(object.getName()));
 			request.set("properties", new PropertiesMetaValue(object.getProperties()));
@@ -95,11 +91,14 @@
 			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")));
+			String type = (String) metaValueFactory.unwrap(compositeValue.get("modelType"));
+			if (type != null) {
+				model.setModelType(type);
+			}
+			else {
+				model.setModelType("PHYSICAL");	
+			}
+			
 			model.setVisible((Boolean) metaValueFactory.unwrap(compositeValue.get("visible")));
 			model.setName((String) metaValueFactory.unwrap(compositeValue.get("name")));
 			model.setProperties((Properties) metaValueFactory.unwrap(compositeValue.get("properties")));

Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -46,8 +46,9 @@
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlType(name = "property")
 public class PropertyMetadata implements Serializable{
-
-    @XmlAttribute(name = "name", required = true)
+	private static final long serialVersionUID = -5040224539939758816L;
+	
+	@XmlAttribute(name = "name", required = true)
     protected String name;
     @XmlAttribute(name = "value", required = true)
     protected String value;
@@ -75,4 +76,8 @@
 	public void setValue(String value) {
 		this.value = value;
 	}
+	
+	public String toString() {
+		return this.name+"="+this.value;
+	}
 }
\ No newline at end of file

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/ReferenceMappingMetadata.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -85,6 +85,7 @@
         this.refName = value;
     }
 
+    @ManagementProperty(description="Resource Names")
     public List<String> getResourceNames() {
         if (this.resourceNames == null) {
             this.resourceNames = new ArrayList<String>();
@@ -92,7 +93,6 @@
         return this.resourceNames;
     }
     
-    @ManagementProperty(description="Resource Names")
     public void setResourceNames(List<String> names) {
     	this.resourceNames = new ArrayList<String>(names);
     }

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -21,9 +21,7 @@
  */
 package org.teiid.adminapi.impl;
 
-import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
@@ -35,27 +33,25 @@
 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;
 import org.jboss.managed.api.annotation.ManagementObjectID;
 import org.jboss.managed.api.annotation.ManagementOperation;
 import org.jboss.managed.api.annotation.ManagementProperty;
+import org.teiid.adminapi.Model;
 import org.teiid.adminapi.VDB;
+import org.teiid.adminapi.impl.ModelMetaData.ValidationError;
 
 import com.metamatrix.core.CoreConstants;
-import com.metamatrix.core.vdb.ModelType;
 
 @ManagementObject(componentType=@ManagementComponent(type="teiid",subtype="vdb"))
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlType(name = "", propOrder = {
     "description",
-    "propertiesDirect",
-    "modelsDirect",
-    "connectorMappings",
+    "JAXBProperties",
+    "JAXBModels",
     "securityRoleMappings",
-    "problemMarkers"
 })
 @XmlRootElement(name = "vdb")
 public class VDBMetaData extends AdminObjectImpl implements VDB {
@@ -69,27 +65,21 @@
 			return entry.getName();
 		}
 	});
-	 
+	
 	@XmlAttribute(name = "version", required = true)
 	private int version = 1;
 	
 	@XmlElement(name = "description")
 	private String description;
 	
-    @XmlElement(name = "connector-mapping")
-    protected ListOverMap<ReferenceMappingMetadata> connectorMappings = new ListOverMap<ReferenceMappingMetadata>(new KeyBuilder<ReferenceMappingMetadata>() {
+    @XmlElement(name = "role-mapping")
+    protected ListOverMap<ReferenceMappingMetadata> securityRoleMappings = new ListOverMap<ReferenceMappingMetadata>(new KeyBuilder<ReferenceMappingMetadata>() {
 			@Override
 			public String getKey(ReferenceMappingMetadata entry) {
 				return entry.getRefName();
 			}
-		});
+	});
     
-    @XmlElement(name = "security-role-mapping")
-    protected List<ReferenceMappingMetadata> securityRoleMappings;	
-    
-    @XmlElement(name = "problem-marker")
-    protected List<ProblemMarker> problemMarkers;    
-	
 	private String fileUrl = null;
 	
 	public VDBMetaData() {
@@ -97,13 +87,10 @@
 		ModelMetaData system = new ModelMetaData();
 		system.setName(CoreConstants.SYSTEM_MODEL);
 		system.setVisible(true);
-		system.setModelType(ModelType.getString(ModelType.PHYSICAL));
-		system.setConnectorReference("system");
+		system.setModelType(Model.Type.PHYSICAL.name());
+		system.addSourceMapping("system", "system");
 		system.setSupportsMultiSourceBindings(false);
-		system.setPath("builtin");
-		
-		addConnectorMapping(new ReferenceMappingMetadata("system", "system"));
-		
+				
 		addModel(system);
 	}
 
@@ -153,7 +140,7 @@
 		this.fileUrl = url;
 	}
 
-	@ManagementProperty(description="Model list in a VDB", managed=true)
+	@ManagementProperty(description="Models in a VDB", managed=true)
 	public List<ModelMetaData> getModels(){
 		return new ArrayList<ModelMetaData>(this.models.getMap().values());
 	}
@@ -164,7 +151,7 @@
 	 * @return
 	 */
 	@XmlElement(name = "model", required = true, type = ModelMetaData.class)
-	protected List<ModelMetaData> getModelsDirect(){
+	protected List<ModelMetaData> getJAXBModels(){
 		return models;
 	}	
 	
@@ -185,16 +172,18 @@
 	@Override
 	@ManagementProperty(description = "VDB validity errors", readOnly=true)		
 	public List<String> getValidityErrors(){
-		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());
+		List<String> allErrors = new ArrayList<String>();
+		for (ModelMetaData model:this.models.getMap().values()) {
+			List<ValidationError> errors = model.getErrors();
+			if (errors != null && !errors.isEmpty()) {
+				for (ValidationError m:errors) {
+					if (ValidationError.Severity.valueOf(m.getSeverity()).equals(ValidationError.Severity.ERROR)) {
+						allErrors.add(m.getValue());
+					}
 				}
 			}
-			return errors;
 		}
-		return Collections.emptyList(); 
+		return allErrors; 
 	}
 
 	@Override
@@ -209,12 +198,7 @@
         }
     	for(ModelMetaData m: this.models.getMap().values()) {
     		if (m.isSource()) {
-    			String connectorReference = m.getConnectorReference();
-    			if (connectorReference == null) {
-    				return false;
-    			}
-    			
-    			List<String> resourceNames = getConnectorBindingNames(connectorReference);
+    			List<String> resourceNames = m.getSourceNames();
     			if (resourceNames.isEmpty()) {
     				return false;
     			}
@@ -224,7 +208,7 @@
     } 	
     
 	public String toString() {
-		return getName()+"."+getVersion()+ models; //$NON-NLS-1$
+		return getName()+"."+getVersion()+ models.getMap().values(); //$NON-NLS-1$
 	}
 
 	@ManagementOperation(description = "Get the model with given name")		
@@ -242,33 +226,13 @@
 		return list;
 	}
 	
-	@ManagementProperty(description="Connector reference mappings")
-    public List<ReferenceMappingMetadata> getConnectorMappings() {
-		return connectorMappings;
-	}	
-	
-	public List<String> getConnectorBindingNames(String referenceName) {
-		ReferenceMappingMetadata rmm = this.connectorMappings.getMap().get(referenceName);
-		if (rmm != null) {
-			return rmm.getResourceNames();
-		}
-		return Collections.emptyList();
-	}
-    
-    public void addConnectorMapping(ReferenceMappingMetadata data) {
-    	this.connectorMappings.getMap().put(data.getRefName(), data);
-    }
-    
-    @ManagementProperty(description="Security refrence mappings")
+    @ManagementProperty(description="Security refrence mappings", managed=true)
 	public List<ReferenceMappingMetadata> getSecurityRoleMappings() {
-		return securityRoleMappings;
+		return new ArrayList<ReferenceMappingMetadata>(this.securityRoleMappings);
 	}    
 	
 	public void addSecurityRoleMapping(ReferenceMappingMetadata data) {
-		if (this.securityRoleMappings == null) {
-			this.securityRoleMappings = new ArrayList<ReferenceMappingMetadata>();
-		}
-		this.securityRoleMappings.add(data);
+		this.securityRoleMappings.getMap().put(data.getRefName(), data);
 	}
 	
 	// this one manages the Management API
@@ -281,51 +245,7 @@
 	// This one manages the JAXB binding
 	@Override
 	@XmlElement(name = "property", type = PropertyMetadata.class)
-	protected List<PropertyMetadata> getPropertiesDirect(){
-		return super.getPropertiesDirect();
+	protected List<PropertyMetadata> getJAXBProperties(){
+		return super.getJAXBProperties();
 	}
-	
-    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{
-    	
-		private static final long serialVersionUID = -2939032879707369197L;
-		
-		@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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/main/resources/vdb-deployer.xsd	2010-03-03 23:08:18 UTC (rev 1894)
@@ -12,27 +12,65 @@
 					<xs:complexType>
 						<xs:sequence>
 							<xs:element name="property" type="property" minOccurs="0" maxOccurs="unbounded"/>
-							<xs:element name="connector-ref" type="xs:string" minOccurs="0"/>
+							<xs:element name="source" minOccurs="0" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:attribute name="name" type="xs:string" use="required"/>
+									<xs:attribute name="jndi-name" type="xs:string"/>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="validation-error" minOccurs="0" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:simpleContent>
+										<xs:extension base="xs:string">
+											<xs:attribute name="severity">
+												<xs:simpleType>
+													<xs:restriction base="xs:string">
+														<xs:enumeration value="ERROR"/>
+														<xs:enumeration value="WARNING"/>
+													</xs:restriction>
+												</xs:simpleType>
+											</xs:attribute>
+										</xs:extension>
+									</xs:simpleContent>
+								</xs:complexType>
+							</xs:element>
 						</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:attribute name="type" default="PHYSICAL">
+							<xs:simpleType>
+								<xs:restriction base="xs:string">
+									<xs:enumeration value="PHYSICAL"/>
+									<xs:enumeration value="VIRTUAL"/>
+									<xs:enumeration value="FUNCTION"/>
+								</xs:restriction>
+							</xs:simpleType>
+						</xs:attribute>
+						<xs:attribute name="visible" type="xs:boolean" default="true"/>
 					</xs:complexType>
 				</xs:element>
-				<xs:element name="connector-mapping" type="reference-mapping" minOccurs="0" maxOccurs="unbounded"/>
-				<xs:element name="security-role-mapping" type="reference-mapping" minOccurs="0" maxOccurs="unbounded"/>
-                <xs:element name="problem-marker" minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="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:sequence>
+						<xs:attribute name="name" type="xs:string" use="required"/>
+					</xs:complexType>
+				</xs:element>
+                <xs:element name="entry" 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:sequence>
+                            <xs:element name="description" type="xs:string" minOccurs="0"/>
+                            <xs:element name="property" type="property" minOccurs="0" maxOccurs="unbounded"/>
+                        </xs:sequence>
+                        <xs:attribute name="path" type="xs:string" use="required"/>
                     </xs:complexType>
                 </xs:element>
+				<xs:element name="role-mapping" type="reference-mapping" minOccurs="0" maxOccurs="unbounded"/>
 			</xs:sequence>
 			<xs:attribute name="name" type="xs:string" use="required"/>
 			<xs:attribute name="version" type="xs:int" use="required"/>

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -21,20 +21,21 @@
  */
 package org.teiid.adminapi.impl;
 
-import static org.junit.Assert.assertEquals;
-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 static org.junit.Assert.*;
 
 import java.io.StringReader;
 import java.io.StringWriter;
 
+import javax.xml.XMLConstants;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
 
 import org.junit.Test;
+import org.teiid.adminapi.Model;
+import org.teiid.adminapi.impl.ModelMetaData.ValidationError;
 
 
 public class TestVDBMetaData {
@@ -50,40 +51,39 @@
 		
 		ModelMetaData modelOne = new ModelMetaData();
 		modelOne.setName("model-one");
-		modelOne.setConnectorReference("java:mybinding");
-		modelOne.setModelType("physical");
+		modelOne.addSourceMapping("s1", "java:mybinding");
+		modelOne.setModelType("PHYSICAL");
 		modelOne.addProperty("model-prop", "model-value");
 		modelOne.addProperty("model-prop", "model-value-override");
 		modelOne.setVisible(false);
+		modelOne.addError("ERROR", "There is an error in VDB");
 		
 		vdb.addModel(modelOne);
 		
 		ModelMetaData modelTwo = new ModelMetaData();
 		modelTwo.setName("model-two");
-		modelTwo.setConnectorReference("binding-two-ref");
-		modelTwo.setModelType("virtual");
+		modelTwo.addSourceMapping("s1", "java:binding-one");
+		modelTwo.addSourceMapping("s2", "java:binding-two");
+		modelTwo.setModelType("VIRTUAL");
 		modelTwo.addProperty("model-prop", "model-value");
 		
 		vdb.addModel(modelTwo);
 		
-		ReferenceMappingMetadata ref = new ReferenceMappingMetadata();
-		ref.setRefName("binding-two-ref");
-		ref.addResourceName("java:binding-one");
-		ref.addResourceName("java:binding-two");
-		vdb.addConnectorMapping(ref);
-		
-		vdb.addProblemMarker("ERROR", "There is an error in VDB");
-		
+
+		SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+        Schema schema = schemaFactory.newSchema(VDBMetaData.class.getResource("/vdb-deployer.xsd")); 		
 		JAXBContext jc = JAXBContext.newInstance(new Class<?>[] {VDBMetaData.class});
 		Marshaller marshell = jc.createMarshaller();
+		marshell.setSchema(schema);
 		marshell.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,new Boolean(true));
 		
 		StringWriter sw = new StringWriter();
 		marshell.marshal(vdb, sw);
-		Unmarshaller un = jc.createUnmarshaller();
-
+				
 		System.out.println(sw.toString());
-		
+
+		// UnMarshell
+		Unmarshaller un = jc.createUnmarshaller();
 		vdb = (VDBMetaData)un.unmarshal(new StringReader(sw.toString()));
 		
 		assertEquals("myVDB", vdb.getName());
@@ -97,28 +97,20 @@
 		
 		modelOne = vdb.getModel("model-one");
 		assertEquals("model-one", modelOne.getName());
-		assertEquals("java:mybinding", modelOne.getConnectorReference());
-		assertEquals("physical", modelOne.getModelType()); 
+		assertEquals("s1", modelOne.getSourceNames().get(0));
+		assertEquals(Model.Type.PHYSICAL, modelOne.getModelType()); 
 		assertEquals("model-value-override", modelOne.getPropertyValue("model-prop"));
 		assertFalse(modelOne.isVisible());
 
 		
 		modelTwo = vdb.getModel("model-two");
 		assertEquals("model-two", modelTwo.getName());
-		assertEquals("binding-two-ref", modelTwo.getConnectorReference());
-		assertEquals("virtual", modelTwo.getModelType()); // this is not persisted in the XML
+		assertTrue(modelTwo.getSourceNames().contains("s1"));
+		assertTrue(modelTwo.getSourceNames().contains("s2"));
+		assertEquals(Model.Type.VIRTUAL, modelTwo.getModelType()); // this is not persisted in the XML
 		assertEquals("model-value", modelTwo.getPropertyValue("model-prop"));
 		
 		
-		assertTrue(vdb.getConnectorMappings().size()==2);
-		ref = vdb.getConnectorMappings().get(1);
-		
-		assertEquals("binding-two-ref", ref.getRefName());
-		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"));
 	}
 }

Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriter.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriter.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriter.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -1,60 +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 com.metamatrix.common.xml;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.jdom.Document;
-import org.jdom.JDOMException;
-
-
-/** 
-* This interface is used to read and write JDOM compliant XML files.
-*/
-public interface XMLReaderWriter {
-
-    /**
-    * This method will write a JDOM Document to an OutputStream.
-    *
-    * @param doc the JDOM document to be written to the OutputStream
-    * @param stream the output stream to be written to.
-    * @throws IOException if there is a problem writing to the OutputStream
-    */
-    public void writeDocument(Document doc, OutputStream stream) throws IOException;
-    
-    /**
-    * This method will write a JDOM Document to an OutputStream.
-    *
-    * @param stream the input stream to read the XML document from.
-    * @return the JDOM document reference that represents the XML text in the
-    * InputStream.
-    * @throws IOException if there is a problem reading from the InputStream
-    * @throws JDOMException if the InputStream does not represent a JDOM 
-    * compliant XML document.
-    */
-    public Document readDocument(InputStream stream) throws JDOMException, IOException;
-    
-}

Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriterImpl.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriterImpl.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XMLReaderWriterImpl.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -1,104 +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 com.metamatrix.common.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.jdom.Document;
-import org.jdom.output.XMLOutputter;
-import org.jdom.JDOMException;
-
-import com.metamatrix.internal.core.xml.JdomHelper;
-
-
-/** 
-* This implementation will use the JDOMhelper to read in XML files and will
-* use the JDOM utility to write out JDOM XML files.
-*/
-public class XMLReaderWriterImpl implements XMLReaderWriter{
-
-    public static final int DEFAULT_INDENT_SIZE = 4;
-    public static final boolean DEFAULT_USE_NEW_LINES = true;
-    
-    private int indent = DEFAULT_INDENT_SIZE;
-    private boolean newLines = DEFAULT_USE_NEW_LINES;
-
-    /**
-    * This method will write a JDOM Document to an OutputStream.
-    *
-    * @param doc the JDOM document to be written to the OutputStream
-    * @param stream the output stream to be written to.
-    * @throws IOException if there is a problem writing to the OutputStream
-    */
-    public void writeDocument(Document doc, OutputStream stream) throws IOException{
-        StringBuffer indentBuffer = new StringBuffer();
-        for (int i = 0; i < indent; i++) {
-            indentBuffer.append(" "); //$NON-NLS-1$
-        }
-        XMLOutputter outputter = new XMLOutputter(JdomHelper.getFormat(indentBuffer.toString(), newLines));
-        
-        outputter.output(doc, stream);
-        stream.flush();
-        stream.close();
-        
-    }
-    
-    /**
-    * This method will write a JDOM Document to an OutputStream.
-    *
-    * @param stream the input stream to read the XML document from.
-    * @return the JDOM document reference that represents the XML text in the
-    * InputStream.
-    * @throws IOException if there is a problem reading from the InputStream
-    * @throws JDOMException if the InputStream does not represent a JDOM 
-    * compliant XML document.
-    */
-    public Document readDocument(InputStream stream) throws JDOMException, IOException{
-        return JdomHelper.buildDocument(stream);
-    }
-    
-    /**
-    * This method will set the indent size of all JDOM Documents that are
-    * written using this object.
-    *
-    * @param indent the number of spaces to indent the XML heirarchy in the 
-    * output files.
-    */
-    public void setIndentSize(int indent) {
-        this.indent = indent;
-    }
-    
-    /**
-    * This method will set whether or not new Lines are used to mimic the 
-    * hierarchal structure of all JDOM Documents that are
-    * written using this object.
-    *
-    * @param newLines whether or not to include new line chars in output files.
-    */
-    public void setUseNewLines(boolean newLines) {
-        this.newLines = newLines;
-    }
-    
-}

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -68,9 +68,9 @@
         }
         ConnectorException exception = null;
         ModelMetaData model = vdb.getModel(modelName);
-        for (String binding:vdb.getConnectorBindingNames(model.getConnectorReference())) {
+        for (String sourceName:model.getSourceNames()) {
         	try {
-        		ConnectorManager mgr = this.connectorRepo.getConnectorManager(binding);
+        		ConnectorManager mgr = this.connectorRepo.getConnectorManager(model.getSourceJndiName(sourceName));
         		caps = mgr.getCapabilities();
         		break;
             } catch(ConnectorException e) {

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -36,7 +36,6 @@
 import javax.sql.rowset.serial.SerialBlob;
 import javax.sql.rowset.serial.SerialClob;
 
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.api.ConnectorException;
@@ -46,8 +45,8 @@
 import org.teiid.connector.metadata.runtime.Datatype;
 import org.teiid.connector.metadata.runtime.ForeignKey;
 import org.teiid.connector.metadata.runtime.KeyRecord;
-import org.teiid.connector.metadata.runtime.ProcedureParameter;
 import org.teiid.connector.metadata.runtime.Procedure;
+import org.teiid.connector.metadata.runtime.ProcedureParameter;
 import org.teiid.connector.metadata.runtime.Schema;
 import org.teiid.connector.metadata.runtime.Table;
 import org.teiid.dqp.internal.datamgr.impl.ConnectorManager;
@@ -318,7 +317,7 @@
 		ArrayList<Schema> result = new ArrayList<Schema>(); 
 		for (Schema schema : metadata.getSchemas().values()) {
 			ModelMetaData model = vdb.getModel(schema.getName());
-			if(model.getVisibility() == Visibility.PUBLIC) {
+			if(model.isVisible()) {
 				result.add(schema);
 			}
 		}
@@ -344,12 +343,12 @@
         if (connectorBindingId == null) {
         	VDBMetaData vdb = workItem.getDqpWorkContext().getVDB();
         	ModelMetaData model = vdb.getModel(modelName);
-        	List<String> bindings = vdb.getConnectorBindingNames(model.getConnectorReference());
+        	List<String> bindings = model.getSourceNames();
 	        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$
 	        }
-	        connectorBindingId = bindings.get(0); 
+	        connectorBindingId = model.getSourceJndiName(bindings.get(0)); 
 	        Assertion.isNotNull(connectorBindingId, "could not obtain connector id"); //$NON-NLS-1$
         }
         aqr.setConnectorName(connectorBindingId);

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -89,18 +89,18 @@
         ModelMetaData model = vdb.getModel(modelName);
         List<AccessNode> accessNodes = new ArrayList<AccessNode>();
         
-        for(String bindingName:vdb.getConnectorBindingNames(model.getConnectorReference())) {
+        for(String sourceName:model.getSourceNames()) {
             
             // Create a new cloned version of the access node and set it's model name to be the bindingUUID
             AccessNode instanceNode = (AccessNode) accessNode.clone();
             instanceNode.setID(getID());
-            instanceNode.setConnectorBindingId(bindingName);
+            instanceNode.setConnectorBindingId(model.getSourceJndiName(sourceName));
             
             // Modify the command to pull the instance column and evaluate the criteria
             Command command = (Command)instanceNode.getCommand().clone();
             
             // Replace all multi-source elements with the source name
-            DeepPreOrderNavigator.doVisit(command, new MultiSourceElementReplacementVisitor(bindingName));
+            DeepPreOrderNavigator.doVisit(command, new MultiSourceElementReplacementVisitor(sourceName));
 
             // Rewrite the command now that criteria may have been simplified
             try {

Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -31,7 +31,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.dqp.internal.process.DQPWorkContext;
@@ -302,7 +301,7 @@
         try {
 		    String modelName = getMetadata().getFullName(modelID);
 		    ModelMetaData model = vdb.getModel(modelName);
-		    if(model.getVisibility() != Visibility.PUBLIC) {
+		    if(!model.isVisible()) {
 		        handleValidationError(DQPPlugin.Util.getString("ERR.018.005.0088", getMetadata().getFullName(group.getMetadataID()))); //$NON-NLS-1$
 		    }
         } catch (MetaMatrixComponentException e) {

Modified: branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -37,7 +37,6 @@
 import java.util.Properties;
 
 import org.jboss.virtual.VirtualFile;
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
 import org.teiid.connector.metadata.runtime.Column;
@@ -97,7 +96,7 @@
     private static UnmodifiableProperties EMPTY_PROPS = new UnmodifiableProperties(new Properties());
     
     private final CompositeMetadataStore store;
-    private Map<VirtualFile, Visibility> vdbEntries;
+    private Map<VirtualFile, Boolean> vdbEntries;
     private FunctionLibrary functionLibrary;
     private VDBMetaData vdbMetaData;
     
@@ -112,7 +111,7 @@
      * TransformationMetadata constructor
      * @param context Object containing the info needed to lookup metadta.
      */
-    public TransformationMetadata(VDBMetaData vdbMetadata, final CompositeMetadataStore store, Map<VirtualFile, Visibility> vdbEntries, Collection <FunctionMethod> udfMethods) {
+    public TransformationMetadata(VDBMetaData vdbMetadata, final CompositeMetadataStore store, Map<VirtualFile, Boolean> vdbEntries, Collection <FunctionMethod> udfMethods) {
     	ArgCheck.isNotNull(store);
     	this.vdbMetaData = vdbMetadata;
         this.store = store;
@@ -988,8 +987,8 @@
     public String getCharacterVDBResource(String resourcePath) throws MetaMatrixComponentException, QueryMetadataException {
     	for (VirtualFile f:this.vdbEntries.keySet()) {
     		if (f.getPathName().equals(resourcePath)) {
-    			Visibility v = this.vdbEntries.get(f);
-    			if (v.equals(Visibility.PUBLIC)) {
+    			Boolean v = this.vdbEntries.get(f);
+    			if (v.booleanValue()) {
 	    			try {
 						return ObjectConverterUtil.convertToString(f.openStream());
 					} catch (IOException e) {
@@ -1015,8 +1014,8 @@
     public String[] getVDBResourcePaths() throws MetaMatrixComponentException, QueryMetadataException {
     	ArrayList<String> paths = new ArrayList<String>();
     	for (VirtualFile f:this.vdbEntries.keySet()) {
-    		Visibility v = this.vdbEntries.get(f);
-    		if (v.equals(Visibility.PUBLIC)) {
+    		Boolean v = this.vdbEntries.get(f);
+    		if (v.booleanValue()) {
     			paths.add(f.getPathName());
     		}
     	}

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -29,7 +29,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.metadata.runtime.Table;
@@ -158,9 +157,9 @@
     	else {
     		model.setModelType(ModelType.getString(ModelType.VIRTUAL));
     	}
-    	model.setVisibility(Visibility.PUBLIC);
+    	model.setVisible(true);
     	model.setSupportsMultiSourceBindings(false);
-    	model.setConnectorReference(name);
+    	model.addSourceMapping(name, null);
     	
     	return model;
     }
@@ -2310,7 +2309,7 @@
     	vdb.setName("example1");
     	vdb.setVersion(1);
     	ModelMetaData m = createModel("pm1", true);
-    	m.setVisibility(Visibility.PRIVATE);
+    	m.setVisible(false);
     	vdb.addModel(m);
     	vdb.addModel(createModel("vm1", false));
     	
@@ -2536,10 +2535,9 @@
     	ModelMetaData model = new ModelMetaData();
     	model.setName("MultiModel");
    		model.setModelType(ModelType.getString(ModelType.PHYSICAL));
-    	model.setVisibility(Visibility.PUBLIC);
+    	model.setVisible(true);
     	
     	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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -60,8 +60,7 @@
         VDBMetaData vdb = Mockito.mock(VDBMetaData.class); 
         ModelMetaData model = Mockito.mock(ModelMetaData.class); 
         Mockito.stub(vdb.getModel(modelName)).toReturn(model);
-        Mockito.stub(model.getConnectorReference()).toReturn("ref-name");
-        Mockito.stub(vdb.getConnectorBindingNames("ref-name")).toReturn(bindings);
+        Mockito.stub(model.getSourceNames()).toReturn(bindings);
         
         BasicSourceCapabilities basicSourceCapabilities = new BasicSourceCapabilities();
         basicSourceCapabilities.setFunctionSupport(functionName, true);
@@ -69,7 +68,7 @@
         ConnectorManagerRepository repo = Mockito.mock(ConnectorManagerRepository.class);
         ConnectorManager cm = Mockito.mock(ConnectorManager.class);
         Mockito.stub(cm.getCapabilities()).toReturn(basicSourceCapabilities);
-        Mockito.stub(repo.getConnectorManager(modelName)).toReturn(cm);
+        Mockito.stub(repo.getConnectorManager(Mockito.anyString())).toReturn(cm);
         
         CachedFinder finder = new CachedFinder(repo, vdb);
         

Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -22,9 +22,7 @@
 
 package org.teiid.dqp.internal.process;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 import java.sql.ResultSet;
 import java.util.concurrent.ExecutionException;
@@ -35,7 +33,6 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
-import org.teiid.adminapi.Visibility;
 import org.teiid.dqp.internal.datamgr.impl.ConnectorManagerRepository;
 import org.teiid.dqp.internal.datamgr.impl.FakeTransactionService;
 
@@ -55,7 +52,7 @@
 
     @Before public void setUp() throws Exception {
         DQPWorkContext context = FakeMetadataFactory.buildWorkContext(FakeMetadataFactory.exampleBQTCached(), FakeMetadataFactory.exampleBQTVDB());
-        context.getVDB().getModel("BQT3").setVisibility(Visibility.PRIVATE); //$NON-NLS-1$
+        context.getVDB().getModel("BQT3").setVisible(false); //$NON-NLS-1$
 
         ConnectorManagerRepository repo = Mockito.mock(ConnectorManagerRepository.class);
         Mockito.stub(repo.getConnectorManager(Mockito.anyString())).toReturn(new AutoGenDataService());

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -22,10 +22,8 @@
 
 package org.teiid.dqp.internal.process.multisource;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
@@ -35,7 +33,6 @@
 
 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;
 
@@ -102,12 +99,10 @@
             char sourceID = 'a';
             // by default every model has one binding associated, but for multi-source there were none assigned. 
             ModelMetaData m = vdb.getModel(model);
-            int x = vdb.getConnectorBindingNames(m.getConnectorReference()).size();
-            ArrayList<String> names = new ArrayList<String>();
+            int x = m.getSourceNames().size();
             for(int i=x; i<sourceCount; i++, sourceID++) {
-            	names.add("" + sourceID);
+            	 m.addSourceMapping("" + sourceID, null);
             }
-            vdb.addConnectorMapping(new ReferenceMappingMetadata(m.getConnectorReference(), names));
         }
         
         MultiSourceMetadataWrapper wrapper = new MultiSourceMetadataWrapper(metadata, multiSourceModels); 

Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -30,7 +30,6 @@
 import junit.framework.TestCase;
 
 import org.mockito.Mockito;
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.dqp.internal.process.Request;
 
@@ -244,7 +243,7 @@
 	private void helpTestLookupVisibility(boolean visible) throws QueryParserException, QueryValidatorException, MetaMatrixComponentException {
 		VDBMetaData vdb = FakeMetadataFactory.example1VDB();
 		if (!visible) {
-			vdb.getModel("pm1").setVisibility(Visibility.PRIVATE); //$NON-NLS-1$
+			vdb.getModel("pm1").setVisible(false);
 		}
 		AuthorizationValidationVisitor mvvv = new AuthorizationValidationVisitor(Mockito.mock(AuthorizationService.class), vdb);
 		String sql = "select lookup('pm1.g1', 'e1', 'e2', 1)"; //$NON-NLS-1$

Modified: branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -31,7 +31,6 @@
 import java.util.Properties;
 
 import org.junit.Test;
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.metadata.runtime.Datatype;
@@ -76,7 +75,7 @@
 		ModelMetaData model = new ModelMetaData();
 		model.setName(name);
 		model.setModelType(ModelType.getString(ModelType.PHYSICAL));
-		model.setVisibility(Visibility.PUBLIC);
+		model.setVisible(true);
 		return model;
 	}
 	
@@ -99,7 +98,7 @@
 		
 		ModelMetaData model2 = new ModelMetaData();
 		model2.setName("x");
-		model2.setVisibility(Visibility.PUBLIC);
+		model2.setVisible(true);
 		vdb.addModel(model2);		
 
 		TransformationMetadata tm = new TransformationMetadata(vdb, cms, null, null);
@@ -108,7 +107,7 @@
 
 		FakeMetadataFactory.buildWorkContext(tm, vdb);
 
-		model.setVisibility(Visibility.PRIVATE);
+		model.setVisible(false);
 
 		tm = new TransformationMetadata(vdb, cms, null, null);
 		result = tm.getGroupsForPartialName("y"); //$NON-NLS-1$

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -33,6 +33,7 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -45,13 +46,10 @@
 import org.jboss.managed.api.ComponentType;
 import org.jboss.managed.api.DeploymentTemplateInfo;
 import org.jboss.managed.api.ManagedComponent;
-import org.jboss.managed.api.ManagedDeployment;
+import org.jboss.managed.api.ManagedObject;
 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;
@@ -65,7 +63,6 @@
 import org.teiid.adminapi.AdminProcessingException;
 import org.teiid.adminapi.ConnectionPoolStatistics;
 import org.teiid.adminapi.ConnectorBinding;
-import org.teiid.adminapi.Model;
 import org.teiid.adminapi.PropertyDefinition;
 import org.teiid.adminapi.Request;
 import org.teiid.adminapi.Session;
@@ -81,10 +78,10 @@
 import org.teiid.adminapi.impl.SessionMetadata;
 import org.teiid.adminapi.impl.TransactionMetadata;
 import org.teiid.adminapi.impl.VDBMetaData;
+import org.teiid.adminapi.impl.ModelMetaData.SourceMapping;
+import org.teiid.adminapi.impl.ModelMetaData.ValidationError;
 import org.teiid.jboss.deployers.RuntimeEngineDeployer;
 
-import com.metamatrix.core.CoreConstants;
-
 public class Admin extends TeiidAdmin {
 	protected Logger log = Logger.getLogger(getClass());
 	private static final ProfileKey DEFAULT_PROFILE_KEY = new ProfileKey(ProfileKey.DEFAULT);
@@ -343,12 +340,12 @@
 		HashMap<String, ConnectorBinding> bindingMap = new HashMap<String, ConnectorBinding>();
 		VDBMetaData vdb = (VDBMetaData) getVDB(vdbName, vdbVersion);
 		if (vdb != null) {
-			for (Model model:vdb.getModels()) {
+			for (ModelMetaData model:vdb.getModels()) {
 				if (model.isSource()) {
-					for (String bindingName : vdb.getConnectorBindingNames(model.getConnectorReference())) {
-						ConnectorBinding binding = getConnectorBinding(bindingName);
+					for (String sourceName : model.getSourceNames()) {
+						ConnectorBinding binding = getConnectorBinding(model.getSourceJndiName(sourceName));
 						if (binding != null) {
-							bindingMap.put(bindingName, binding);
+							bindingMap.put(sourceName, binding);
 						}
 					}
 				}
@@ -445,45 +442,45 @@
 		VDBMetaData vdb = new VDBMetaData();
 		vdb.setName(ManagedUtil.getSimpleValue(mc, "name", String.class));
 		vdb.setDescription(ManagedUtil.getSimpleValue(mc, "description", String.class));
-		vdb.setStatus(VDB.Status.valueOf(ManagedUtil.getSimpleValue(mc, "status", String.class)));
+		String status = ManagedUtil.getSimpleValue(mc, "status", String.class);
+		if (status != null) {
+			vdb.setStatus(VDB.Status.valueOf(status));
+		}
 		vdb.setVersion(ManagedUtil.getSimpleValue(mc, "version", Integer.class));
 		vdb.setUrl(mc.getDeployment().getName());
+		vdb.setProperties(ManagedUtil.getPropertiesValue(mc, "properties"));
 		
-		ArrayList<String> errors = new ArrayList<String>();
-		ManagedUtil.getCollectionValue(mc, "validityErrors", errors, String.class);
-		for (String error:errors) {
-			vdb.addProblemMarker("ERROR", error);
+		// models
+		ManagedProperty mp = mc.getProperty("models");
+		List<ManagedObject> models = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(mp.getValue());
+		for(ManagedObject mo:models) {
+			vdb.addModel(buildModel(mo));
 		}
 		
-		ManagedDeployment deployment = mc.getDeployment();
-		Collection<ManagedComponent> models = deployment.getComponents().values();
-		for (ManagedComponent mm:models) {
-			if (mm.getType().equals(MODELTYPE)) {
-				String modelName = ManagedUtil.getSimpleValue(mm, "name", String.class);
-				if (!modelName.equals(CoreConstants.SYSTEM_MODEL)) {
-					vdb.addModel(buildModel(mm));
-				}
-			}
-		}
-		
 		// TODO: add the following
-		// ConnectorMappings
 		// SecurityRoleMappings
 		
 		return vdb;
 	}
 
-	private ModelMetaData buildModel(ManagedComponent mc) {
+	private ModelMetaData buildModel(ManagedObject mc) {
 		ModelMetaData model = new ModelMetaData();
 		model.setName(ManagedUtil.getSimpleValue(mc, "name", String.class));
-		model.setModelURI(ManagedUtil.getSimpleValue(mc, "modelURI", String.class));
-		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.setVisible(ManagedUtil.getSimpleValue(mc, "visible", Boolean.class));
-		model.setConnectorReference(ManagedUtil.getSimpleValue(mc, "connectorReference", String.class));
+		model.setModelType(ManagedUtil.getSimpleValue(mc, "modelType", String.class));
 		model.setProperties(ManagedUtil.getPropertiesValue(mc, "properties"));
 		
+		List<SourceMapping> mappings = (List<SourceMapping>)MetaValueFactory.getInstance().unwrap(mc.getProperty("sourceMappings").getValue());
+		for (SourceMapping s:mappings) {
+			model.addSourceMapping(s.getName(), s.getJndiName());
+		}
+		
+		List<ValidationError> errors = (List<ValidationError>)MetaValueFactory.getInstance().unwrap(mc.getProperty("errors").getValue());
+		if (errors != null) {
+			for (ValidationError error:errors) {
+				model.addError(error.getSeverity(), error.getValue());
+			}
+		}
 		return model;
 	}
 	
@@ -870,46 +867,41 @@
 	@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");
+//		ManagedComponent mc = getVDBManagedComponent(vdbName, vdbVersion);
+//		if (mc == null) {
+//			throw new AdminProcessingException("VDB with name = "+vdbName + " version = "+ vdbVersion + " not found in configuration");
+//		}
+//		VDBMetaData vdb = buildVDB(mc);
+//		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);
+//		}
 	}	
 
 }

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-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/jboss-integration/src/main/java/org/teiid/adminapi/jboss/ManagedUtil.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -35,7 +35,7 @@
 import org.jboss.deployers.spi.management.deploy.DeploymentManager;
 import org.jboss.deployers.spi.management.deploy.DeploymentProgress;
 import org.jboss.deployers.spi.management.deploy.DeploymentStatus;
-import org.jboss.managed.api.ManagedComponent;
+import org.jboss.managed.api.ManagedCommon;
 import org.jboss.managed.api.ManagedOperation;
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.metatype.api.types.MapCompositeMetaType;
@@ -101,7 +101,7 @@
 		return null;
 	}	
 	
-	public static <T> T getSimpleValue(ManagedComponent mc, String prop, Class<T> expectedType) {
+	public static <T> T getSimpleValue(ManagedCommon mc, String prop, Class<T> expectedType) {
 		 ManagedProperty mp = mc.getProperty(prop);
 		 if (mp != null) {
 			 MetaType metaType = mp.getMetaType();
@@ -118,7 +118,7 @@
 		 return null;
 	}	
 	
-	public static Properties getPropertiesValue(ManagedComponent mc, String prop) {
+	public static Properties getPropertiesValue(ManagedCommon mc, String prop) {
 		 ManagedProperty mp = mc.getProperty(prop);
 		 if (mp != null) {
 			 MetaType metaType = mp.getMetaType();
@@ -140,7 +140,7 @@
 		 return null;
 	}	
 	
-	public static <T> void getCollectionValue(ManagedComponent mc, String prop, Collection<T> list, Class<T> expectedType) {
+	public static <T> void getCollectionValue(ManagedCommon mc, String prop, Collection<T> list, Class<T> expectedType) {
 		 ManagedProperty mp = mc.getProperty(prop);
 		 if (mp != null) {
 			 MetaType metaType = mp.getMetaType();
@@ -274,7 +274,7 @@
 		}
 	}
 	
-	public static MetaValue executeOperation(ManagedComponent mc, String operation, MetaValue... args) {
+	public static MetaValue executeOperation(ManagedCommon mc, String operation, MetaValue... args) {
 		for (ManagedOperation mo:mc.getOperations()) {
 			if (mo.getName().equals(operation)) {
 				return mo.invoke(args);

Modified: branches/JCA/jboss-integration/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
===================================================================
--- branches/JCA/jboss-integration/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/jboss-integration/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -1,10 +1,7 @@
 package org.teiid.adminapi.jboss;
 
 
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertNull;
-import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.*;
 
 import java.io.File;
 import java.io.InputStream;
@@ -18,6 +15,7 @@
 import org.junit.Ignore;
 import org.junit.Test;
 import org.teiid.adminapi.Admin;
+import org.teiid.adminapi.AdminFactory;
 import org.teiid.adminapi.ConnectionPoolStatistics;
 import org.teiid.adminapi.ConnectorBinding;
 import org.teiid.adminapi.PropertyDefinition;
@@ -33,21 +31,18 @@
 @Ignore
 public class TestConnectorBindings extends BaseConnection {
 	ServerDatasourceConnection ds;
-	com.metamatrix.jdbc.api.Connection conn;
 	Admin admin;
 	
 	@Before
 	public void setUp() throws Exception {
 		//if (!Bootstrap.getInstance().isStarted()) Bootstrap.getInstance().bootstrap();
 		ds = new ServerDatasourceConnection();
-		conn = (com.metamatrix.jdbc.api.Connection)ds.getConnection("admin");
-		admin = AdminProvider.getRemote( "jnp://localhost:1099", "javaduke", "anotherduke");	
-		//admin = AdminFactory.getInstance().createAdmin("admin", "admin".toCharArray(), "mm://localhost:31443");
+		//admin = AdminProvider.getRemote( "jnp://localhost:1099", "javaduke", "anotherduke");	
+		admin = AdminFactory.getInstance().createAdmin("admin", "admin".toCharArray(), "mm://localhost:31443");
 	}
 	
 	@After
 	public void tearDown() throws Exception {
-		this.conn.close();
 	}
 
 	@Test public void testConnectorBinding() throws Exception {
@@ -305,5 +300,16 @@
 		assertTrue(f.exists());
 		f.delete();
 	}	
-
+	
+	@Test public void testAssignConnectorBinding() throws Exception {
+		
+		VDB vdb = admin.getVDB("TransactionsRevisited", 1);
+		if (vdb == null) {
+			admin.deleteVDB("TransactionsRevisited", 1);
+			File f = UnitTestUtil.getTestDataFile("TransactionsRevisited.vdb");
+			admin.deployVDB(f.getName(), f.toURI().toURL());
+		}
+		
+		admin.assignBindingsToModel("TransactionsRevisited", 1, "pm1", new String[] {"java:foo", "java:bar"});
+	}
 }

Modified: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -33,7 +33,6 @@
 import java.util.Map;
 
 import org.jboss.virtual.VirtualFile;
-import org.teiid.adminapi.Visibility;
 import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
 import org.teiid.connector.metadata.runtime.Column;
 import org.teiid.connector.metadata.runtime.ColumnSet;
@@ -41,8 +40,8 @@
 import org.teiid.connector.metadata.runtime.ForeignKey;
 import org.teiid.connector.metadata.runtime.KeyRecord;
 import org.teiid.connector.metadata.runtime.MetadataStore;
-import org.teiid.connector.metadata.runtime.ProcedureParameter;
 import org.teiid.connector.metadata.runtime.Procedure;
+import org.teiid.connector.metadata.runtime.ProcedureParameter;
 import org.teiid.connector.metadata.runtime.Schema;
 import org.teiid.connector.metadata.runtime.Table;
 import org.teiid.core.index.IEntryResult;
@@ -67,7 +66,7 @@
     private Map<String, Table> tableCache = new HashMap<String, Table>();
 	private MetadataStore store;
 	private HashSet<VirtualFile> indexFiles = new HashSet<VirtualFile>();
-	private Map<VirtualFile, Visibility> vdbEntries;
+	private Map<VirtualFile, Boolean> vdbEntries;
     
 	public MetadataStore getMetadataStore() throws IOException {
 		if (this.store == null) {
@@ -89,11 +88,11 @@
     	this.indexFiles.add(f);
     }
     
-	public void addEntriesPlusVisibilities(Map<VirtualFile, Visibility> entries) {
+	public void addEntriesPlusVisibilities(Map<VirtualFile, Boolean> entries) {
 		this.vdbEntries = entries;
 	}
 	
-	public Map<VirtualFile, Visibility> getEntriesPlusVisibilities(){
+	public Map<VirtualFile, Boolean> getEntriesPlusVisibilities(){
 		return this.vdbEntries;
 	}
 	

Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -77,7 +77,7 @@
 	}
 	
     private MetadataStore buildDynamicMetadataStore(VFSDeploymentUnit unit, VDBMetaData vdb, ModelMetaData model) throws DeploymentException{
-    	if (vdb.getConnectorBindingNames(model.getConnectorReference()).isEmpty()) {
+    	if (model.getSourceNames().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: vdb.getConnectorBindingNames(model.getConnectorReference())) {
+    	for (String connectorName: model.getSourceNames()) {
     		ConnectorManager cm = this.connectorManagerRepository.getConnectorManager(connectorName);
     		if (cm == null) {
     			continue;

Deleted: branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestMetaData.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestMetaData.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestMetaData.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -1,36 +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.deployers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.managed.api.annotation.ManagementObject;
-import org.teiid.adminapi.impl.ModelMetaData;
-
- at ManagementObject
-public class ManifestMetaData {
-	String vdbName;
-	String vdbDescription;
-	List<ModelMetaData> models = new ArrayList<ModelMetaData>();
-	List<String> errors = new ArrayList<String>();
-}

Deleted: branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestParser.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestParser.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/ManifestParser.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -1,112 +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.deployers;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.Namespace;
-import org.teiid.adminapi.Visibility;
-import org.teiid.adminapi.impl.ModelMetaData;
-
-import com.metamatrix.common.xml.XMLReaderWriter;
-import com.metamatrix.common.xml.XMLReaderWriterImpl;
-import com.metamatrix.core.util.StringUtil;
-
-
-/**
- * VDB Manifest file; right now this is defined as EMF resource in the vdb.edit code, 
- * so to break the dependency from EMF we have defined as the simple XML type here. This
- * will defined as simple xml in future then we can remove this. There is defect logged on this
- * in JIRA
- */
-public class ManifestParser{
-	
-	public static ManifestMetaData load(InputStream in) throws IOException {
-
-		ManifestMetaData vdb = new ManifestMetaData();
-		
-		try {
-			XMLReaderWriter reader = new XMLReaderWriterImpl();
-			Document doc = reader.readDocument(in);
-			Element root = doc.getRootElement();
-			
-			Namespace ns= root.getNamespace(NS);
-			Element vdbElement = root.getChild(VDB_ELEMENT, ns);
-			if (vdbElement != null) {
-				vdb.vdbName = vdbElement.getAttributeValue(NAME);
-				vdb.vdbDescription = vdbElement.getAttributeValue(DESCRIPTION);
-				
-				// build the models
-				List<Element> modelElements = vdbElement.getChildren(MODELS);
-				for(Element modelElement:modelElements) {
-					
-					String modelName = StringUtil.getFirstToken(modelElement.getAttributeValue(NAME), ".");
-					ModelMetaData model = new ModelMetaData();
-					model.setName(modelName);
-
-					model.setModelType(modelElement.getAttributeValue(MODEL_TYPE));
-					model.setPath(modelElement.getAttributeValue(MODEL_PATH,""));
-					model.setUuid(modelElement.getAttributeValue(UUID));
-					model.setModelURI(modelElement.getAttributeValue(PRIMARY_METAMODEL_URI));
-					
-					String visibility = modelElement.getAttributeValue(ACCESSIBILITY);
-					if (visibility != null) {
-						model.setVisibility(Visibility.valueOf(Visibility.class, visibility.toUpperCase()));
-					}
-					
-					List<Element> markers = modelElement.getChildren(MARKERS);
-					for(Element marker:markers) {
-						String severity = marker.getAttributeValue(SEVERITY);
-						if (severity.equals(ERROR)) {
-							vdb.errors.add(marker.getAttributeValue(MESSAGE));
-						}
-					}
-					vdb.models.add(model);
-				}
-			}
-		} catch (JDOMException e) {
-			throw new IOException("Failed to read the VDB-Manifest file"); //$NON-NLS-1$
-		}
-		return vdb;
-	}
-	
-	private static final String MODELS = "models"; //$NON-NLS-1$
-	private static final String ACCESSIBILITY = "accessibility"; //$NON-NLS-1$
-	private static final String PRIMARY_METAMODEL_URI = "primaryMetamodelUri"; //$NON-NLS-1$
-	private static final String UUID = "uuid"; //$NON-NLS-1$
-	private static final String NS = "vdb"; //$NON-NLS-1$
-	private static final String MESSAGE = "message"; //$NON-NLS-1$
-	private static final String ERROR = "ERROR"; //$NON-NLS-1$
-	private static final String SEVERITY = "severity"; //$NON-NLS-1$
-	private static final String NAME = "name"; //$NON-NLS-1$
-	private static final String MODEL_PATH = "modelLocation";//$NON-NLS-1$
-	private static final String MODEL_TYPE = "modelType";//$NON-NLS-1$
-	private static final String VDB_ELEMENT = "VirtualDatabase";//$NON-NLS-1$
-	private static final String DESCRIPTION = "description";//$NON-NLS-1$
-	private static final String MARKERS = "markers";//$NON-NLS-1$
-}

Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/SystemVDBDeployer.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/SystemVDBDeployer.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/SystemVDBDeployer.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -29,7 +29,6 @@
 import org.jboss.virtual.VirtualFile;
 import org.jboss.virtual.VirtualFileFilter;
 import org.jboss.virtual.plugins.context.zip.ZipEntryContext;
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.metadata.index.IndexConstants;
@@ -45,7 +44,7 @@
 	public void start() {
 		ModelMetaData model = new ModelMetaData();
 		model.setName(CoreConstants.SYSTEM_MODEL);
-		model.setVisibility(Visibility.PUBLIC);
+		model.setVisible(true);
 		
 		VDBMetaData deployment = new VDBMetaData();
 		deployment.setName(CoreConstants.SYSTEM_VDB);

Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -21,21 +21,26 @@
  */
 package org.teiid.deployers;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.spi.deployer.managed.ManagedObjectCreator;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.logging.Logger;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.factory.ManagedObjectFactory;
 import org.jboss.virtual.VirtualFile;
 import org.teiid.adminapi.VDB;
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.metadata.runtime.MetadataStore;
@@ -45,7 +50,6 @@
 import org.teiid.metadata.index.IndexMetadataFactory;
 
 import com.metamatrix.core.CoreConstants;
-import com.metamatrix.dqp.embedded.DQPEmbeddedPlugin;
 import com.metamatrix.query.function.metadata.FunctionMethod;
 import com.metamatrix.query.metadata.QueryMetadataInterface;
 
@@ -54,6 +58,7 @@
 	private ManagedObjectFactory mof;
 	private VDBRepository vdbRepository;
 	private DQPContextCache contextCache;
+	private ObjectSerializer serializer;
 	
 	public VDBDeployer() {
 		super(VDBMetaData.class);
@@ -68,6 +73,11 @@
 			log.info("Re-deploying VDB = "+deployment);
 		}
 		
+		List<String> errors = deployment.getValidityErrors();
+		if (errors != null && !errors.isEmpty()) {
+			throw new DeploymentException("VDB has validaity errors; failed to deploy");
+		}
+		
 		this.vdbRepository.addVDB(deployment);
 		
 		TransformationMetadata metadata = null;
@@ -80,7 +90,7 @@
 		IndexMetadataFactory indexFactory = unit.getAttachment(IndexMetadataFactory.class);
 		UDFMetaData udf = unit.getAttachment(UDFMetaData.class);
 		if (indexFactory != null) {
-			Map<VirtualFile, Visibility> visibilityMap = indexFactory.getEntriesPlusVisibilities();
+			Map<VirtualFile, Boolean> visibilityMap = indexFactory.getEntriesPlusVisibilities();
 			metadata = buildTransformationMetaData(deployment, visibilityMap, store, udf);
 		}
 		else {
@@ -96,39 +106,33 @@
 		
 		// add transformation metadata to the repository.
 		this.vdbRepository.addMetadata(deployment, metadata);
+				
+		boolean valid = true;
+		for(ModelMetaData model:deployment.getModels()) {
+			for (String sourceName:model.getSourceNames()) {
+				String jndiName = model.getSourceJndiName(sourceName);
+				try {
+					InitialContext ic = new InitialContext();
+					ic.lookup(jndiName);
+				} catch (NamingException e) {
+					valid = false;
+					String msg = "Jndi resource = "+ jndiName + " not found for Source Name = "+sourceName;
+					model.addError(ModelMetaData.ValidationError.Severity.ERROR.name(), msg);
+					log.info(msg);
+				}
+			}
+		}
 		
 		// Check if the VDB is fully configured.
-		if (isFullyConfiguredVDB(deployment)) {
+		if (valid) {
 			deployment.setStatus(VDB.Status.ACTIVE);
 		}
-		else {
-			log.info(DQPEmbeddedPlugin.Util.getString("VDBService.vdb_missing_bindings", new Object[] {deployment.getName(), deployment.getVersion()})); //$NON-NLS-1$
-		}
-		
 		log.info("VDB = "+deployment + " deployed");
 	}
 
 
-	public boolean isFullyConfiguredVDB(VDBMetaData vdb) {
-    	for(ModelMetaData m: vdb.getModels()) {
-    		if (m.isSource()) {
-    			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;
-    }	
-
 	// does this need to be synchronized? 
-	private TransformationMetadata buildTransformationMetaData(VDBMetaData vdb, Map<VirtualFile, Visibility> visibilityMap, CompositeMetadataStore store, UDFMetaData udf) throws DeploymentException {
+	private TransformationMetadata buildTransformationMetaData(VDBMetaData vdb, Map<VirtualFile, Boolean> visibilityMap, CompositeMetadataStore store, UDFMetaData udf) throws DeploymentException {
 		
 		// get the system VDB metadata store
 		MetadataStore systemStore = this.vdbRepository.getMetadataStore(CoreConstants.SYSTEM_VDB, 1);
@@ -191,10 +195,26 @@
 			this.contextCache.removeVDBScopedCache(deployment.getName(), deployment.getVersion());			
 		}
 
+		try {
+			if (((VFSDeploymentUnit)unit).getRoot().exists()) {
+				File cacheFileName = this.serializer.getAttachmentPath((VFSDeploymentUnit)unit, deployment.getName()+"_"+deployment.getVersion());
+				if (cacheFileName.exists()) {
+					cacheFileName.delete();
+				}
+			}
+		} catch (IOException e) {
+			log.warn("failed to delete the cached metadata files due to:" + e.getMessage());
+		}
+
 		log.info("VDB = "+deployment + " undeployed");
 	}
 
 	public void setContextCache(DQPContextCache cache) {
 		this.contextCache = cache;
-	}	
+	}
+	
+	public void setObjectSerializer(ObjectSerializer serializer) {
+		this.serializer = serializer;
+	}		
+	
 }

Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -33,7 +33,6 @@
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.logging.Logger;
 import org.jboss.virtual.VirtualFile;
-import org.teiid.adminapi.Visibility;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.metadata.CompositeMetadataStore;
@@ -60,7 +59,6 @@
 	private static Map<String, Class<?>> getCustomMappings() {
 		Map<String, Class<?>> mappings = new HashMap<String, Class<?>>();
 		mappings.put(VdbConstants.DEF_FILE_NAME, VDBMetaData.class);
-		mappings.put(VdbConstants.MANIFEST_MODEL_NAME, ManifestMetaData.class);
 		mappings.put(VdbConstants.UDF_FILE_NAME, UDFMetaData.class);
 		return mappings;
 	}
@@ -74,10 +72,6 @@
 			
 			return expectedType.cast(def);
 		}
-		else if (expectedType.equals(ManifestMetaData.class)) {
-			ManifestMetaData manifest = ManifestParser.load(file.openStream());
-			return expectedType.cast(manifest);
-		}
 		else if (expectedType.equals(UDFMetaData.class)) {
 			UDFMetaData udf = new UDFMetaData(FunctionMetadataReader.loadFunctionMethods(file.openStream()));
 			return expectedType.cast(udf);
@@ -102,24 +96,21 @@
 	@Override
 	protected VDBMetaData mergeMetaData(VFSDeploymentUnit unit, Map<Class<?>, List<Object>> metadata) throws Exception {
 		VDBMetaData def = getInstance(metadata, VDBMetaData.class);
-		ManifestMetaData manifest = getInstance(metadata, ManifestMetaData.class);
 		UDFMetaData udf = getInstance(metadata, UDFMetaData.class);
 		
-		if (def == null || manifest == null) {
+		if (def == null) {
 			log.error("Invalid VDB file deployment failed ="+unit.getRoot().getName());
 			return null;
 		}
 		
-		// merge mainfest and def
-		def =  merge(def, manifest);
 		def.setUrl(unit.getRoot().toURL().toExternalForm());		
 		
 		// add the entries and determine their visibility
 		VirtualFile root = unit.getRoot();
 		List<VirtualFile> children = root.getChildrenRecursively();
-		Map<VirtualFile, Visibility> visibilityMap = new LinkedHashMap<VirtualFile, Visibility>();
+		Map<VirtualFile, Boolean> visibilityMap = new LinkedHashMap<VirtualFile, Boolean>();
 		for(VirtualFile f: children) {
-			visibilityMap.put(f, getFileVisibility(f.getPathName(), def));
+			visibilityMap.put(f, isFileVisible(f.getPathName(), def));
 		}
 		
 		// build the metadata store
@@ -153,64 +144,48 @@
 		return def;
 	}
 
-	private VDBMetaData merge(VDBMetaData def, ManifestMetaData manifest) {
-		for(ModelMetaData manifestModel: manifest.models) {
-			ModelMetaData model = def.getModel(manifestModel.getName());
-			if (model != null) {
-				model.setModelType(manifestModel.getModelType());
-				model.setModelURI(manifestModel.getModelURI());
-				model.setPath(manifestModel.getPath());
-				model.setUuid(manifestModel.getUuid());
-				if (manifestModel.getVisibility() != null) {
-					model.setVisibility(manifestModel.getVisibility());
-				}
-			}
-		}
-		return def;
-	}
-		
 	private final static boolean isSystemModelWithSystemTableType(String modelName) {
         return CoreConstants.SYSTEM_MODEL.equalsIgnoreCase(modelName);
     }
 	
-	private Visibility getFileVisibility(String pathInVDB, VDBMetaData vdb) {
+	private boolean isFileVisible(String pathInVDB, VDBMetaData vdb) {
 
 		String modelName = StringUtil.getFirstToken(StringUtil.getLastToken(pathInVDB, "/"), "."); //$NON-NLS-1$ //$NON-NLS-2$
 
 		// If this is any of the Public System Models, like JDBC,ODBC system
 		// models
 		if (isSystemModelWithSystemTableType(modelName)) {
-			return Visibility.PUBLIC;
+			return true;
 		}
 
 		ModelMetaData model = vdb.getModel(modelName);
 		if (model != null) {
-			return model.getVisibility();
+			return model.isVisible();
 		}
 
         String entry = StringUtil.getLastToken(pathInVDB, "/"); //$NON-NLS-1$
         
         // index files should not be visible
 		if( entry.endsWith(VdbConstants.INDEX_EXT) || entry.endsWith(VdbConstants.SEARCH_INDEX_EXT)) {
-			return Visibility.PRIVATE;
+			return false;
 		}
 
 		// manifest file should not be visible
         if(entry.equalsIgnoreCase(VdbConstants.MANIFEST_MODEL_NAME)) {
-            return Visibility.PRIVATE;
+            return false;
         }
         
         // materialization models should not be visible
         if(entry.startsWith(VdbConstants.MATERIALIZATION_MODEL_NAME) && entry.endsWith(VdbConstants.MODEL_EXT)) {
-            return Visibility.PRIVATE;
+            return false;
         }
-        
+              
         // wldl file should be visible
         if(entry.equalsIgnoreCase(VdbConstants.WSDL_FILENAME)) {
-            return Visibility.PUBLIC;
+            return false;
         }     
         // any other file should be visible
-        return Visibility.PUBLIC;		
+        return true;		
 	}	
 	
 	public void setObjectSerializer(ObjectSerializer serializer) {

Modified: branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBStructure.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBStructure.java	2010-03-03 21:54:32 UTC (rev 1893)
+++ branches/JCA/runtime/src/main/java/org/teiid/deployers/VDBStructure.java	2010-03-03 23:08:18 UTC (rev 1894)
@@ -48,9 +48,6 @@
 					if (file.getChild(VdbConstants.DEF_FILE_NAME) == null) {
 						return false;
 					}
-					if (file.getChild(VdbConstants.MANIFEST_MODEL_NAME) == null) {
-						return false;
-					}					
 					createContext(structureContext, new String[] {"/", "runtime-inf"});	
 					return true;
 				}



More information about the teiid-commits mailing list