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)