[teiid-commits] teiid SVN: r2021 - in trunk: client/src/main/java/org/teiid/adminapi/impl and 10 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sun Apr 4 17:59:35 EDT 2010


Author: rareddy
Date: 2010-04-04 17:59:34 -0400 (Sun, 04 Apr 2010)
New Revision: 2021

Modified:
   trunk/client/src/main/java/org/teiid/adminapi/Admin.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/ConnectorBindingMetaData.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/DataPolicyMetadata.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/SessionMetadata.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/SourceMappingMetadata.java
   trunk/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java
   trunk/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java
   trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
   trunk/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java
   trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
   trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetaDataInstanceClassFactory.java
   trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties
   trunk/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java
   trunk/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java
   trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestMMDatabaseMetaData.java
   trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
   trunk/test-integration/db/src/test/resources/TransactionsRevisited.vdb
Log:
TEIID-1017: Adding capability to add/remove to role to a data policy through admin api

Modified: trunk/client/src/main/java/org/teiid/adminapi/Admin.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/Admin.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/Admin.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -355,5 +355,25 @@
      * Closes the admin connection
      */
     void close();
+    
+    /**
+     * Assign a Role name to the Data Policy in a given VDB
+     *  
+     * @param vdbName
+     * @param vdbVersion
+     * @param policyName
+     * @param role
+     */
+    void addRoleToDataPolicy(String vdbName, int vdbVersion, String policyName, String role) throws AdminException;
+    
+    /**
+     * Assign a Role name to the Data Policy in a given VDB
+     *  
+     * @param vdbName
+     * @param vdbVersion
+     * @param policyName
+     * @param role
+     */
+    void removeRoleFromDataPolicy(String vdbName, int vdbVersion, String policyName, String role) throws AdminException;  
 
 }

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/ConnectorBindingMetaData.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/ConnectorBindingMetaData.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/ConnectorBindingMetaData.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -23,7 +23,6 @@
 
 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.ManagementProperty;
 import org.teiid.adminapi.ConnectorBinding;
 
@@ -32,25 +31,34 @@
 
 	private static final long serialVersionUID = -4865836616882247016L;
 	private transient Object type;
+	private String rarFileName;
+	private String jndiName;
 
-	@ManagementProperty(description="Connector Binding Name", readOnly=true)
-	@ManagementObjectID(type="binding")
+	@ManagementProperty(description="Connector Binding Name")
 	public String getName() {
 		return super.getName();
 	}    
 	
 	@Override
-	@ManagementProperty(description="RAR file name", readOnly=true)	
+	@ManagementProperty(description="RAR file name")	
 	public String getRARFileName() {
-		return getPropertyValue("rar-name"); //$NON-NLS-1$
+		return this.rarFileName;
 	}
 
+	public void setRARFileName(String name) {
+		this.rarFileName = name;
+	}
+	
 	@Override
-	@ManagementProperty(description="JNDI name", readOnly=true)	
+	@ManagementProperty(description="JNDI name")	
 	 public String getJNDIName() {
-		return getPropertyValue("jndi-name"); //$NON-NLS-1$
+		return this.jndiName;
 	 }
-	
+
+	public void setJNDIName(String name) {
+		this.jndiName = name;
+	}
+	 
 	public void setComponentType(Object type) {
 		this.type = type;
 	}

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/DataPolicyMetadata.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/DataPolicyMetadata.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/DataPolicyMetadata.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -32,7 +32,6 @@
 import javax.xml.bind.annotation.XmlType;
 
 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.DataPolicy;
@@ -63,11 +62,11 @@
 	});
     
     @XmlElement(name = "mapped-role-name")
-    protected List<String> mappedRoleNames;
+    protected List<String> mappedRoleNames = new ArrayList<String>();
 
 	@Override
 	@ManagementProperty(description="Policy Name")
-	@ManagementObjectID(type="policy")
+	//@ManagementObjectID(type="policy")
     public String getName() {
         return name;
     }
@@ -112,9 +111,14 @@
 	}
 
 	public void setMappedRoleNames(List<String> names) {
-		this.mappedRoleNames = names;
+		this.mappedRoleNames.clear();
+		this.mappedRoleNames.addAll(names);
 	}    
 	
+	public void addMappedRoleName(String name) {
+		this.mappedRoleNames.add(name);
+	}  	
+	
 	public boolean allows(String resourceName, DataPolicy.PermissionType type) {
 		for(PermissionMetaData permission:this.permissions.getMap().values()) {
 			if (permission.getResourceName().equalsIgnoreCase(resourceName)  ) {
@@ -140,9 +144,9 @@
         "allowDelete"
     })	
     @ManagementObject(properties=ManagementProperties.EXPLICIT)
-	public static class PermissionMetaData implements DataPermission{
-    	    	    
-        private static final String SEPARATOR = "."; //$NON-NLS-1$
+	public static class PermissionMetaData implements DataPermission, Serializable {
+		private static final long serialVersionUID = 7034744531663164277L;
+		private static final String SEPARATOR = "."; //$NON-NLS-1$
         public static final String RECURSIVE = "*"; //$NON-NLS-1$
         private static final String ALL_NODES = RECURSIVE;
         public static final String SEPARATOR_WITH_RECURSIVE  = SEPARATOR + RECURSIVE;
@@ -164,7 +168,7 @@
         
         @Override
         @ManagementProperty(description="Resource Name, for which permission defined")
-        @ManagementObjectID(type="permission")
+        //@ManagementObjectID(type="permission")
         @XmlElement(name = "resource-name", required = true)
         public String getResourceName() {
             return resourceName;

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -35,7 +35,6 @@
 import javax.xml.bind.annotation.XmlValue;
 
 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;
@@ -76,7 +75,6 @@
     protected List<ValidationError> errors;    
     
 	@ManagementProperty(description="Model Name")
-	@ManagementObjectID(type="model")
 	@XmlAttribute(name = "name", required = true)
 	public String getName() {
 		return super.getName();
@@ -132,8 +130,8 @@
         addProperty(SUPPORTS_MULTI_SOURCE_BINDINGS_KEY, Boolean.toString(supports));
     }
 
-    public void setModelType(String modelType) {
-        this.modelType = modelType;
+    public void setModelType(Model.Type modelType) {
+        this.modelType = modelType.name();
     }
     
     public String toString() {
@@ -216,7 +214,6 @@
         }
     	
         @ManagementProperty (description="Error Message")
-        @ManagementObjectID(type="error")
         public String getValue() {
 			return value;
 		}

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/PropertyMetadata.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -30,7 +30,6 @@
 import javax.xml.bind.annotation.XmlType;
 
 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;
 
@@ -68,7 +67,6 @@
     }
 
     @ManagementProperty(description="property key")
-    @ManagementObjectID(type="property")
     public String getName() {
         return name;
     }

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/SessionMetadata.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/SessionMetadata.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/SessionMetadata.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -26,7 +26,6 @@
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 
-import org.jboss.managed.api.annotation.ManagementObjectID;
 import org.jboss.managed.api.annotation.ManagementProperty;
 import org.jboss.metatype.api.annotations.MetaMapping;
 import org.teiid.adminapi.Session;
@@ -111,7 +110,6 @@
 
 	@Override
 	@ManagementProperty(description="Session ID", readOnly=true)
-	@ManagementObjectID(type="session")	
 	public long getSessionId() {
 		return this.sessionId;
 	}

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/SourceMappingMetadata.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/SourceMappingMetadata.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/SourceMappingMetadata.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -31,7 +31,6 @@
 import javax.xml.bind.annotation.XmlType;
 
 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;
 
@@ -56,7 +55,6 @@
     }
 
     @ManagementProperty (description="Source Name")
-    @ManagementObjectID(type="sourceMapping")
 	public String getName() {
 		return name;
 	}

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/VDBMetaData.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -24,7 +24,6 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Properties;
 import java.util.Set;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -36,7 +35,6 @@
 
 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.DataPolicy;
@@ -55,7 +53,6 @@
 })
 @XmlRootElement(name = "vdb")
 public class VDBMetaData extends AdminObjectImpl implements VDB {
-	private static final String STATUS_KEY = "status"; //$NON-NLS-1$
 
 	private static final long serialVersionUID = -4723595252013356436L;
 	
@@ -87,10 +84,10 @@
 	
 	private String fileUrl = null;
 	private boolean dynamic = false;
+	private VDB.Status status = VDB.Status.INACTIVE;
 	
 
 	@ManagementProperty(description="Name of the VDB")
-	@ManagementObjectID(type="vdb")
 	@XmlAttribute(name = "name", required = true)
 	public String getName() {
 		return super.getName();
@@ -102,21 +99,17 @@
 	} 
 	
 	@Override
-	@ManagementProperty(description="VDB Status", readOnly=true)
+	@ManagementProperty(description="VDB Status")
 	public Status getStatus() {
-		String status = getPropertyValue(STATUS_KEY);
-		if (status != null) {
-			return VDB.Status.valueOf(status);
-		}
-		return VDB.Status.ACTIVE;
+		return this.status;
 	}
 	
 	public void setStatus(Status s) {
-		addProperty(STATUS_KEY, s.name());
+		this.status = s;
 	}
 	
 	@Override
-	@ManagementProperty(description="VDB version", readOnly=true)
+	@ManagementProperty(description="VDB version")
 	public int getVersion() {
 		return this.version;
 	}
@@ -142,8 +135,8 @@
 	}
 	
 	/**
-	 * This method required to make the JNDI assignment on the model work; if not present Management framework
-	 * treating "models" as ReadOnly property.
+	 * This method required to make the JNDI assignment on the model work; if not persistent Management framework
+	 * treating "models" as ReadOnly property. The actual assignment is done in the VDBMetaDataClassInstancefactory
 	 * @param models
 	 */
 	public void setModels(List<Model> models) {
@@ -252,7 +245,8 @@
 	}	
 	
 	/**
-	 * This method is required by the Management framework to write the mappings.
+	 * This method is required by the Management framework to write the mappings to the persistent form. The actual assignment is done
+	 * in the VDBMetaDataClassInstancefactory
 	 * @param policies
 	 */
 	public void setDataPolicies(List<DataPolicy> policies){

Modified: trunk/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java
===================================================================
--- trunk/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/client/src/test/java/org/teiid/adminapi/impl/TestVDBMetaData.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -55,7 +55,7 @@
 		ModelMetaData modelOne = new ModelMetaData();
 		modelOne.setName("model-one"); //$NON-NLS-1$
 		modelOne.addSourceMapping("s1", "java:mybinding"); //$NON-NLS-1$ //$NON-NLS-2$
-		modelOne.setModelType("PHYSICAL"); //$NON-NLS-1$
+		modelOne.setModelType(Model.Type.PHYSICAL); //$NON-NLS-1$
 		modelOne.addProperty("model-prop", "model-value"); //$NON-NLS-1$ //$NON-NLS-2$
 		modelOne.addProperty("model-prop", "model-value-override"); //$NON-NLS-1$ //$NON-NLS-2$
 		modelOne.setVisible(false);
@@ -67,7 +67,7 @@
 		modelTwo.setName("model-two"); //$NON-NLS-1$
 		modelTwo.addSourceMapping("s1", "java:binding-one"); //$NON-NLS-1$ //$NON-NLS-2$
 		modelTwo.addSourceMapping("s2", "java:binding-two"); //$NON-NLS-1$ //$NON-NLS-2$
-		modelTwo.setModelType("VIRTUAL"); //$NON-NLS-1$
+		modelTwo.setModelType(Model.Type.VIRTUAL); //$NON-NLS-1$
 		modelTwo.addProperty("model-prop", "model-value"); //$NON-NLS-1$ //$NON-NLS-2$
 		
 		vdb.addModel(modelTwo);

Modified: trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -29,6 +29,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.teiid.adminapi.Model;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.SessionMetadata;
 import org.teiid.adminapi.impl.VDBMetaData;
@@ -40,7 +41,6 @@
 import com.metamatrix.api.exception.MetaMatrixComponentException;
 import com.metamatrix.api.exception.query.QueryMetadataException;
 import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.core.vdb.ModelType;
 import com.metamatrix.query.mapping.relational.QueryNode;
 import com.metamatrix.query.mapping.xml.MappingAttribute;
 import com.metamatrix.query.mapping.xml.MappingDocument;
@@ -155,10 +155,10 @@
     	ModelMetaData model = new ModelMetaData();
     	model.setName(name);
     	if (source) {
-    		model.setModelType(ModelType.getString(ModelType.PHYSICAL));
+    		model.setModelType(Model.Type.PHYSICAL);
     	}
     	else {
-    		model.setModelType(ModelType.getString(ModelType.VIRTUAL));
+    		model.setModelType(Model.Type.PHYSICAL);
     	}
     	model.setVisible(true);
     	model.setSupportsMultiSourceBindings(false);
@@ -2381,7 +2381,7 @@
     	
     	ModelMetaData model = new ModelMetaData();
     	model.setName("MultiModel");
-   		model.setModelType(ModelType.getString(ModelType.PHYSICAL));
+   		model.setModelType(Model.Type.PHYSICAL);
     	model.setVisible(true);
     	
     	model.setSupportsMultiSourceBindings(true);

Modified: trunk/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -22,7 +22,8 @@
 
 package org.teiid.metadata;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -31,6 +32,7 @@
 import java.util.Properties;
 
 import org.junit.Test;
+import org.teiid.adminapi.Model;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.metadata.runtime.Datatype;
@@ -38,7 +40,6 @@
 
 import com.metamatrix.api.exception.query.QueryMetadataException;
 import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.core.vdb.ModelType;
 import com.metamatrix.query.unittest.FakeMetadataFactory;
 
 public class TestTransformationMetadata {
@@ -72,7 +73,7 @@
 	ModelMetaData buildModel(String name) {
 		ModelMetaData model = new ModelMetaData();
 		model.setName(name);
-		model.setModelType(ModelType.getString(ModelType.PHYSICAL));
+		model.setModelType(Model.Type.PHYSICAL);
 		model.setVisible(true);
 		return model;
 	}

Modified: trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -51,6 +51,7 @@
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.managed.plugins.DefaultFieldsImpl;
 import org.jboss.managed.plugins.WritethroughManagedPropertyImpl;
+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;
@@ -77,6 +78,7 @@
 import org.teiid.adminapi.WorkerPoolStatistics;
 import org.teiid.adminapi.impl.ConnectionPoolStatisticsMetadata;
 import org.teiid.adminapi.impl.ConnectorBindingMetaData;
+import org.teiid.adminapi.impl.DataPolicyMetadata;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.PropertyDefinitionMetadata;
 import org.teiid.adminapi.impl.RequestMetadata;
@@ -84,6 +86,7 @@
 import org.teiid.adminapi.impl.TransactionMetadata;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.adminapi.impl.WorkerPoolStatisticsMetadata;
+import org.teiid.adminapi.impl.DataPolicyMetadata.PermissionMetaData;
 import org.teiid.connector.api.Connector;
 import org.teiid.jboss.IntegrationPlugin;
 import org.teiid.jboss.deployers.RuntimeEngineDeployer;
@@ -467,17 +470,69 @@
 			vdb.addModel(buildModel(mo));
 		}
 		
-		// TODO: add the following
 		// SecurityRoleMappings
-		
+		mp = mc.getProperty("dataPolicies");//$NON-NLS-1$
+		List<ManagedObject> policies = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(mp.getValue());
+		if (policies != null && !policies.isEmpty()) {
+			for(ManagedObject mo:policies) {
+				vdb.addDataPolicy(buildDataPolicy(mo));
+			}		
+		}
 		return vdb;
 	}
 
+	private DataPolicyMetadata buildDataPolicy(ManagedObject managedPolicy) {
+		DataPolicyMetadata policy = new DataPolicyMetadata();
+		policy.setName(ManagedUtil.getSimpleValue(managedPolicy, "name", String.class));//$NON-NLS-1$
+		policy.setDescription(ManagedUtil.getSimpleValue(managedPolicy, "description", String.class));//$NON-NLS-1$
+		
+        ManagedProperty mappedRoleNames = managedPolicy.getProperty("mappedRoleNames");//$NON-NLS-1$
+        CollectionValueSupport roleCollection = (CollectionValueSupport)mappedRoleNames.getValue();
+        if (roleCollection != null) {
+	        MetaValue[] roleNames = roleCollection.getElements();
+	        for (MetaValue mv:roleNames) {
+	        	policy.addMappedRoleName((String)((SimpleValueSupport)mv).getValue());
+	        }
+        }
+        
+        ManagedProperty permissions = managedPolicy.getProperty("permissions");//$NON-NLS-1$
+        if (permissions != null) {
+        	List<ManagedObject> permissionCollection = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(permissions.getValue());
+            if (permissionCollection != null) {
+            	for (ManagedObject mo:permissionCollection) {
+            		PermissionMetaData permission = new PermissionMetaData();
+            		
+            		permission.setResourceName(ManagedUtil.getSimpleValue(mo, "resourceName", String.class));//$NON-NLS-1$
+            		
+            		if (ManagedUtil.getSimpleValue(mo, "allowCreate", Boolean.class) != null) {
+            			permission.setAllowCreate(ManagedUtil.getSimpleValue(mo, "allowCreate", Boolean.class));
+            		}
+            		
+            		if (ManagedUtil.getSimpleValue(mo, "allowRead", Boolean.class) != null) {
+            			permission.setAllowRead(ManagedUtil.getSimpleValue(mo, "allowRead", Boolean.class));
+            		}
+            		
+            		if (ManagedUtil.getSimpleValue(mo, "allowUpdate", Boolean.class) != null) {
+            			permission.setAllowUpdate(ManagedUtil.getSimpleValue(mo, "allowUpdate", Boolean.class));
+            		}
+            		
+            		if (ManagedUtil.getSimpleValue(mo, "allowDelete", Boolean.class) != null) {
+            			permission.setAllowDelete(ManagedUtil.getSimpleValue(mo, "allowDelete", Boolean.class));
+            		}            		
+            		
+            		policy.addPermission(permission);
+            	}
+            }        	
+        }
+        
+		return policy;
+	}
+
 	private ModelMetaData buildModel(ManagedObject managedModel) {
 		ModelMetaData model = new ModelMetaData();
 		model.setName(ManagedUtil.getSimpleValue(managedModel, "name", String.class));//$NON-NLS-1$
 		model.setVisible(ManagedUtil.getSimpleValue(managedModel, "visible", Boolean.class));//$NON-NLS-1$
-		model.setModelType(ManagedUtil.getSimpleValue(managedModel, "modelType", String.class));//$NON-NLS-1$
+		model.setModelType(Model.Type.valueOf(ManagedUtil.getSimpleValue(managedModel, "modelType", String.class)));//$NON-NLS-1$
 
 		ManagedProperty prop = managedModel.getProperty("JAXBProperties"); //$NON-NLS-1$
 		List<ManagedObject> properties = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(prop.getValue());
@@ -932,6 +987,69 @@
 		} catch (Exception e) {
 			throw new AdminComponentException(e.getMessage(), e);
 		}		        
+	}
+
+	private void manageRoleToDataPolicy(String vdbName, int vdbVersion, String policyName, String role, boolean add)  throws AdminException {
+		ManagedComponent mc = getVDBManagedComponent(vdbName, vdbVersion);
+		if (mc == null) {
+			throw new AdminProcessingException(IntegrationPlugin.Util.getString("vdb_not_found", vdbName, vdbVersion)); //$NON-NLS-1$
+		}
+		
+		ManagedProperty mp = mc.getProperty("dataPolicies");//$NON-NLS-1$
+		List<ManagedObject> policies = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(mp.getValue());
+		ManagedObject managedPolicy = null;
+		if (policies != null && !policies.isEmpty()) {
+			for(ManagedObject mo:policies) {
+				String name = ManagedUtil.getSimpleValue(mo, "name", String.class); //$NON-NLS-1$
+				if (policyName.equals(name)) {
+					managedPolicy = mo;
+				}
+			}		
+		}
+		
+		if (managedPolicy == null) {
+			throw new AdminProcessingException(IntegrationPlugin.Util.getString("policy_not_found", policyName, vdbName, vdbVersion)); //$NON-NLS-1$
+		}
+		
+        ManagedProperty mappedRoleNames = managedPolicy.getProperty("mappedRoleNames");//$NON-NLS-1$
+        CollectionValueSupport roleCollection = (CollectionValueSupport)mappedRoleNames.getValue();
+        ArrayList<MetaValue> modifiedRoleNames = new ArrayList<MetaValue>();
+        if (roleCollection != null) {
+	        MetaValue[] roleNames = roleCollection.getElements();
+	        for (MetaValue mv:roleNames) {
+	        	String existing = (String)((SimpleValueSupport)mv).getValue();
+	        	if (!existing.equals(role)) {
+	        		modifiedRoleNames.add(mv);
+	        	}
+	        }
+        }
+        else {
+        	roleCollection = new CollectionValueSupport(new CollectionMetaType("java.util.List", SimpleMetaType.STRING));
+        	mappedRoleNames.setValue(roleCollection);
+        }
+        
+        if (add) {
+        	modifiedRoleNames.add(ManagedUtil.wrap(SimpleMetaType.STRING, role));
+        }
+        
+        roleCollection.setElements(modifiedRoleNames.toArray(new MetaValue[modifiedRoleNames.size()]));
+        
+		try {
+			getView().updateComponent(mc);
+		} catch (Exception e) {
+			throw new AdminComponentException(e.getMessage(), e);
+		}		
+	}
+
+	
+	@Override
+	public void addRoleToDataPolicy(String vdbName, int vdbVersion, String policyName, String role)  throws AdminException {
+		manageRoleToDataPolicy(vdbName, vdbVersion, policyName, role, true);
+	}
+	
+	@Override
+	public void removeRoleFromDataPolicy(String vdbName, int vdbVersion, String policyName, String role)  throws AdminException{
+		manageRoleToDataPolicy(vdbName, vdbVersion, policyName, role, false);
 	}	
 
 }

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetaDataInstanceClassFactory.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetaDataInstanceClassFactory.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/VDBMetaDataInstanceClassFactory.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -30,6 +30,7 @@
 import org.jboss.managed.plugins.factory.AbstractInstanceClassFactory;
 import org.jboss.metatype.api.values.MetaValue;
 import org.jboss.metatype.api.values.MetaValueFactory;
+import org.teiid.adminapi.impl.DataPolicyMetadata;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.adminapi.jboss.ManagedUtil;
@@ -74,6 +75,19 @@
 				vdb.addProperty(ManagedUtil.getSimpleValue(managedProperty, "name", String.class), ManagedUtil.getSimpleValue(managedProperty, "value", String.class)); //$NON-NLS-1$ //$NON-NLS-2$
 			}
 		}
+		else if (property.getName().equals("dataPolicies")) { //$NON-NLS-1$
+			List<ManagedObject> policies = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(property.getValue());
+			for(ManagedObject managedPolicy:policies) {
+				String policyName = ManagedUtil.getSimpleValue(managedPolicy, "name", String.class); //$NON-NLS-1$
+				DataPolicyMetadata policy = vdb.getDataPolicy(policyName);
+				
+		        ManagedProperty mappedRoleNames = managedPolicy.getProperty("mappedRoleNames");//$NON-NLS-1$
+		        if (mappedRoleNames != null){
+		            List<String> roleNames = (List<String>)MetaValueFactory.getInstance().unwrap(mappedRoleNames.getValue());
+		            policy.setMappedRoleNames(roleNames);
+		        }				
+			}
+		}		
 		else {
 			super.setValue(beanInfo, property, vdb, value);
 		}

Modified: trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties
===================================================================
--- trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties	2010-04-04 21:59:34 UTC (rev 2021)
@@ -35,6 +35,8 @@
 connector_type_not_found=Connector Type template "{0}" not found in the configuration.
 vdb_not_found=VDB with name "{0}" version "{1}" not found in configuration
 model_not_found=Model name "{0}" not found in the VDB with name "{1}" version "{2}"
+policy_not_found=Policy name "{0}" not found in the VDB with name "{1}" version "{2}"
+
 sourcename_not_found=No source name {0} found in the model: {1}.{2}.{3}
 connector_started= Teiid connector {0} started
 connector_stopped=Teiid connector {0} stopped

Modified: trunk/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/runtime/src/main/java/org/teiid/deployers/DynamicVDBDeployer.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -53,7 +53,7 @@
 		ModelMetaData system = new ModelMetaData();
 		system.setName(CoreConstants.SYSTEM_MODEL);
 		system.setVisible(true);
-		system.setModelType(Model.Type.PHYSICAL.name());
+		system.setModelType(Model.Type.PHYSICAL);
 		system.addSourceMapping(CoreConstants.SYSTEM_MODEL, CoreConstants.SYSTEM_MODEL); 
 		system.setSupportsMultiSourceBindings(false);
 		vdb.addModel(system);		

Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBParserDeployer.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -173,7 +173,7 @@
 		ModelMetaData system = new ModelMetaData();
 		system.setName(CoreConstants.SYSTEM_MODEL);
 		system.setVisible(true);
-		system.setModelType(Model.Type.PHYSICAL.name());
+		system.setModelType(Model.Type.PHYSICAL);
 		system.addSourceMapping(CoreConstants.SYSTEM_MODEL, CoreConstants.SYSTEM_MODEL); 
 		system.setSupportsMultiSourceBindings(false);
 		vdb.addModel(system);		

Modified: trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestMMDatabaseMetaData.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestMMDatabaseMetaData.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestMMDatabaseMetaData.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -49,6 +49,7 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.teiid.adminapi.VDB;
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.client.DQP;
@@ -103,6 +104,7 @@
                 vdbMetaData.setName(p.getProperty(TeiidURL.JDBC.VDB_NAME));
                 vdbMetaData.addAttchment(QueryMetadataInterface.class, metadata);
                 vdbMetaData.addAttchment(TransformationMetadata.class, metadata);
+                vdbMetaData.setStatus(VDB.Status.ACTIVE);
                 repo.addMetadata(vdbMetaData, metadata);
                 for (Schema schema : metadata.getMetadataStore().getSchemas().values()) {
                 	ModelMetaData model = new ModelMetaData();

Modified: trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
===================================================================
--- trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java	2010-04-02 00:46:43 UTC (rev 2020)
+++ trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java	2010-04-04 21:59:34 UTC (rev 2021)
@@ -25,6 +25,7 @@
 import org.teiid.adminapi.AdminFactory;
 import org.teiid.adminapi.ConnectionPoolStatistics;
 import org.teiid.adminapi.ConnectorBinding;
+import org.teiid.adminapi.DataPolicy;
 import org.teiid.adminapi.Model;
 import org.teiid.adminapi.PropertyDefinition;
 import org.teiid.adminapi.Request;
@@ -55,7 +56,7 @@
 		admin.close();
 	}
 	
-	@AfterClass
+	//@AfterClass
 	public static void end() throws Exception {
 		admin = AdminFactory.getInstance().createAdmin("admin", "admin".toCharArray(), "mm://localhost:31443"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
@@ -352,4 +353,37 @@
 		
 		assertTrue("Test not veryfied", checked); //$NON-NLS-1$
 	}
+	
+	
+	@Test public void testAddRoleNames() throws Exception {
+		installVDB();
+		admin.addRoleToDataPolicy("TransactionsRevisited", 1, "policy1", "managers"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		
+		VDB vdb = admin.getVDB("TransactionsRevisited", 1); //$NON-NLS-1$
+		List<DataPolicy> policies = vdb.getDataPolicies();
+		assertTrue (!policies.isEmpty());
+		for (DataPolicy policy:policies) {
+			if (policy.getName().equals("policy1")) { //$NON-NLS-1$
+				List<String> sources = policy.getMappedRoleNames();
+				assertTrue(sources.contains("managers"));
+			}
+		}
+		
+		// remove the role
+		admin.removeRoleFromDataPolicy("TransactionsRevisited", 1, "policy1", "managers");
+		
+		vdb = admin.getVDB("TransactionsRevisited", 1); //$NON-NLS-1$
+		policies = vdb.getDataPolicies();
+		assertTrue (!policies.isEmpty());
+		
+		for (DataPolicy policy:policies) {
+			if (policy.getName().equals("policy1")) { //$NON-NLS-1$
+				List<String> sources = policy.getMappedRoleNames();
+				assertFalse(sources.contains("managers"));
+			}
+		}		
+		
+		// remove non-existent role name
+		admin.removeRoleFromDataPolicy("TransactionsRevisited", 1, "policy1", "FOO");
+	}	
 }

Modified: trunk/test-integration/db/src/test/resources/TransactionsRevisited.vdb
===================================================================
(Binary files differ)



More information about the teiid-commits mailing list