[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>
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * <element name="resource-name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="allow-create" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * <element name="allow-read" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * <element name="allow-update" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * <element name="allow-delete" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * </sequence>
+ * <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "", propOrder = {
+ "description",
+ "resourceName",
+ "allowCreate",
+ "allowRead",
+ "allowUpdate",
+ "allowDelete",
+})
+ 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