[teiid-commits] teiid SVN: r2112 - in trunk: jboss-integration/src/main/java/org/teiid/adminapi/jboss and 2 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon May 10 23:40:12 EDT 2010


Author: rareddy
Date: 2010-05-10 23:40:11 -0400 (Mon, 10 May 2010)
New Revision: 2112

Modified:
   trunk/build/kits/jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
   trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
   trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/AdminObjectBuilder.java
   trunk/runtime/src/main/java/org/teiid/templates/TranslatorMetadataICF.java
   trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
Log:
TEIID-1075:Fixing the "translator-property" settings in the Translator

Modified: trunk/build/kits/jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
===================================================================
--- trunk/build/kits/jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml	2010-05-10 18:50:00 UTC (rev 2111)
+++ trunk/build/kits/jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml	2010-05-11 03:40:11 UTC (rev 2112)
@@ -80,6 +80,11 @@
         <constructor><parameter><inject bean="PersistenceFactory" /></parameter></constructor>
    </bean>   
    
+   <bean name="TranslatorMetadataICF" class="org.teiid.templates.TranslatorMetadataICF">
+      <constructor>
+         <parameter><inject bean="ManagedObjectFactory"/></parameter>
+      </constructor>
+   </bean>   
         
     <!--  used for the translators -->
    <bean name="TranslatorDeploymentTemplateInfoFactory" class="org.teiid.templates.TranslatorTemplateInfoFactory"/>

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-05-10 18:50:00 UTC (rev 2111)
+++ trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java	2010-05-11 03:40:11 UTC (rev 2112)
@@ -83,11 +83,12 @@
 	private static ComponentType DQPTYPE = new ComponentType("teiid", "dqp");//$NON-NLS-1$ //$NON-NLS-2$	
 	private static String DQPNAME = RuntimeEngineDeployer.class.getName();
 	private static ComponentType TRANSLATOR_TYPE = new ComponentType("teiid", "translator");//$NON-NLS-1$ //$NON-NLS-2$
+	private static AdminObjectBuilder AOB = new AdminObjectBuilder();
 	
-	
 	private ManagementView view;
 	private DeploymentManager deploymentMgr;
 	
+	
 	static {
 		VFS.init();
 	}
@@ -95,7 +96,7 @@
 	public Admin(ManagementView view, DeploymentManager deployMgr) {
 		this.view = view;
 		this.view.load();
-		
+				
 		this.deploymentMgr =  deployMgr;
         try {
         	this.deploymentMgr.loadProfile(DEFAULT_PROFILE_KEY);
@@ -147,7 +148,7 @@
 		try {
 			Set<ManagedComponent> mcSet = getView().getComponentsForType(TRANSLATOR_TYPE);
 			for (ManagedComponent mc:mcSet) {
-				factories.add(AdminObjectBuilder.buildAO(mc, TranslatorMetaData.class));
+				factories.add(AOB.buildAdminObject(mc, TranslatorMetaData.class));
 			}
 		} catch (Exception e) {
 			throw new AdminComponentException(e);
@@ -160,7 +161,7 @@
 		try {
 			ManagedComponent mc = getView().getComponent(deployedName, TRANSLATOR_TYPE);
 			if (mc != null) {
-				return AdminObjectBuilder.buildAO(mc, TranslatorMetaData.class);
+				return AOB.buildAdminObject(mc, TranslatorMetaData.class);
 			}
 			return null;
 		} catch(Exception e) {

Modified: trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/AdminObjectBuilder.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/AdminObjectBuilder.java	2010-05-10 18:50:00 UTC (rev 2111)
+++ trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/AdminObjectBuilder.java	2010-05-11 03:40:11 UTC (rev 2112)
@@ -28,12 +28,19 @@
 import org.jboss.managed.api.ManagedCommon;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.factory.ManagedObjectFactory;
+import org.jboss.managed.plugins.factory.AbstractManagedObjectFactory;
+import org.jboss.managed.plugins.factory.ManagedObjectFactoryBuilder;
+import org.jboss.metatype.api.types.CollectionMetaType;
 import org.jboss.metatype.api.types.MetaType;
+import org.jboss.metatype.api.types.SimpleMetaType;
 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.SimpleValue;
+import org.teiid.adminapi.impl.TranslatorMetaData;
 import org.teiid.jboss.IntegrationPlugin;
+import org.teiid.templates.TranslatorMetadataICF;
 
 import com.metamatrix.common.util.PropertiesUtils;
 import com.metamatrix.core.MetaMatrixRuntimeException;
@@ -41,6 +48,12 @@
 
 public class AdminObjectBuilder {
 
+	private ManagedObjectFactory mof = ManagedObjectFactoryBuilder.create();
+	
+	public AdminObjectBuilder() {
+		this.mof.setInstanceClassFactory(TranslatorMetaData.class, new TranslatorMetadataICF(this.mof));	
+	}
+	
 	public static <T> T buildAO(ManagedCommon mc, Class<T> clazz) {
 		
 		try {
@@ -59,16 +72,25 @@
 					}
 					else if (type.isComposite()) {
 						if (value instanceof MapCompositeValueSupport) {
-							MapCompositeValueSupport map = (MapCompositeValueSupport)value;
+							Object myValue = MetaValueFactory.getInstance().unwrap(value);
+							PropertiesUtils.setBeanProperty(t, mp.getMappedName(), myValue);
 						}
 					}
 					else if (type.isCollection()) {
 						List list = new ArrayList();
-						List<ManagedObject> managedObjects = (List<ManagedObject>)MetaValueFactory.getInstance().unwrap(value);
-						for (ManagedObject mo:managedObjects) {
-							list.add(buildAO(mo, mo.getAttachment().getClass()));							
+
+						MetaType elementType = ((CollectionMetaType) type).getElementType();
+						if (elementType == AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE) {
+							List<ManagedObject> managedObjects = (List<ManagedObject>) MetaValueFactory.getInstance().unwrap(value);
+							for (ManagedObject mo : managedObjects) {
+								list.add(buildAO(mo, mo.getAttachment().getClass()));
+							}
 						}
-						PropertiesUtils.setBeanProperty(t, mp.getName(), list);
+						else if (elementType == SimpleMetaType.STRING) {
+							list.addAll((List<String>) MetaValueFactory.getInstance().unwrap(value));
+						}
+						
+						PropertiesUtils.setBeanProperty(t, mp.getMappedName(), list);
 					}
 				}
 			}
@@ -79,4 +101,24 @@
 			throw new MetaMatrixRuntimeException(e, IntegrationPlugin.Util.getString("class_not_found", clazz.getName())); //$NON-NLS-1$
 		}
 	}
+	
+	public <T> T buildAdminObject(ManagedCommon mc, Class<T> clazz) {
+		try {
+			Object t = clazz.newInstance();			
+	        ManagedObject mo = mof.initManagedObject(t, "teiid", "translator"); //$NON-NLS-1$ //$NON-NLS-2$		
+			for (ManagedProperty mp : mc.getProperties().values()) {
+				ManagedProperty dsProp = mo.getProperty(mp.getName());
+				if (dsProp != null) {
+					if (mp.getValue() != null) {
+						dsProp.setValue(mp.getValue());
+					}
+				}
+			}  
+			return clazz.cast(t);
+		} catch (InstantiationException e) {
+			throw new MetaMatrixRuntimeException(e, IntegrationPlugin.Util.getString("class_not_found", clazz.getName())); //$NON-NLS-1$
+		} catch (IllegalAccessException e) {
+			throw new MetaMatrixRuntimeException(e, IntegrationPlugin.Util.getString("class_not_found", clazz.getName())); //$NON-NLS-1$
+		}
+	}
 }

Modified: trunk/runtime/src/main/java/org/teiid/templates/TranslatorMetadataICF.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/templates/TranslatorMetadataICF.java	2010-05-10 18:50:00 UTC (rev 2111)
+++ trunk/runtime/src/main/java/org/teiid/templates/TranslatorMetadataICF.java	2010-05-11 03:40:11 UTC (rev 2112)
@@ -38,11 +38,13 @@
 import org.teiid.adminapi.impl.PropertyMetadata;
 import org.teiid.adminapi.impl.TranslatorMetaData;
 
+/**
+ * This class is defined as bean in the deployer's -jboss-beans.xml file. This used to construct the 
+ * TranslatorMetadata object with "translator-property"
+ */
 public class TranslatorMetadataICF extends	AbstractInstanceClassFactory<TranslatorMetaData> {
 
-	public TranslatorMetadataICF() {
-		super();
-	}
+	private static final String TRANSLATOR_PROPERTY = "translator-property"; //$NON-NLS-1$
 
 	public TranslatorMetadataICF(ManagedObjectFactory mof) {
 		super(mof);
@@ -65,7 +67,7 @@
 			return null;
 
 		MetaValue value = null;
-		if ("translator-property".equals(property.getName())) { //$NON-NLS-1$
+		if (TRANSLATOR_PROPERTY.equals(property.getName())) { 
 			MapCompositeValueSupport mapValue = new MapCompositeValueSupport(SimpleMetaType.STRING);
 			List<PropertyMetadata> list = attachment.getJAXBProperties();
 			if (list != null) {
@@ -73,8 +75,6 @@
 					String name = prop.getName();
 					MetaValue svalue = SimpleValueSupport.wrap(prop.getValue());
 					mapValue.put(name, svalue);
-//					MetaValue stype = SimpleValueSupport.wrap(prop.getType());
-//					mapValue.put(name + ".type", stype);
 				}
 			}
 			value = mapValue;
@@ -87,7 +87,7 @@
 	@Override
 	protected Object unwrapValue(BeanInfo beanInfo, ManagedProperty property, MetaValue value) {
 		Object unwrapValue = null;
-		if ("translator-property".equals(property.getName())) { //$NON-NLS-1$
+		if (TRANSLATOR_PROPERTY.equals(property.getName())) { 
 			
 			if ((value instanceof MapCompositeValueSupport) == false) {
 				return super.unwrapValue(beanInfo, property, value);
@@ -97,22 +97,7 @@
 
 			List<PropertyMetadata> list = new ArrayList<PropertyMetadata>();
 			for (String name : mapValue.getMetaType().keySet()) {
-//				// Ignore the type we've added before
-//				if (name.endsWith(".type"))
-//					continue;
-
-				PropertyMetadata prop = new PropertyMetadata();
-				prop.setName(name);
-				String svalue = (String) getMetaValueFactory().unwrap(mapValue.get(name));
-				prop.setValue(svalue);
-				
-//				String nameType = name + ".type";
-//				MetaValue typeValue = mapValue.get(nameType);
-//				if (typeValue != null) {
-//					String type = (String) getMetaValueFactory().unwrap(typeValue);
-//					prop.setType(type);
-//				}
-				list.add(prop);
+				list.add(new PropertyMetadata(name, (String) getMetaValueFactory().unwrap(mapValue.get(name))));
 			}
 			unwrapValue = list;
 		} else {

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-05-10 18:50:00 UTC (rev 2111)
+++ trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java	2010-05-11 03:40:11 UTC (rev 2112)
@@ -15,7 +15,6 @@
 import java.io.InputStream;
 import java.sql.Connection;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -89,10 +88,70 @@
 		
 		assertNull(admin.getVDB("TransactionsRevisited", 1)); //$NON-NLS-1$
 	}
+
+	@Test public void testGetVDB() throws Exception {
+		VDB vdb = admin.getVDB("TransactionsRevisited", 1);
+		assertNotNull(vdb); //$NON-NLS-1$
+		
+		assertEquals("TransactionsRevisited", vdb.getName());
+		assertEquals(1, vdb.getVersion());
+		assertEquals("A VDB to test transactions", vdb.getDescription());
+		//assertEquals("sample-value", vdb.getPropertyValue("sample"));
+		assertEquals(VDB.Status.INACTIVE, vdb.getStatus());
+
+		// test model
+		List<Model> models = vdb.getModels();
+		assertEquals(4, models.size());
+		Model model = null;
+		for (Model m:models) {
+			if (m.getName().equals("pm1")) {
+				model = m;
+				break;
+			}
+		}
+		assertNotNull(model);
+		assertEquals(Model.Type.PHYSICAL, model.getModelType());
+		assertEquals("sample-value", model.getPropertyValue("sample"));
+		List<String> sourceNames = model.getSourceNames();
+		assertEquals(1, sourceNames.size());
+		assertEquals("mysql", model.getSourceTranslatorName(sourceNames.get(0)));
+		assertEquals("java:mysql-connector-binding", model.getSourceConnectionJndiName(sourceNames.get(0)));
+		assertTrue(model.isSource());
+		//assertTrue(model.isSupportsMultiSourceBindings());
+		assertTrue(model.isVisible());
+		
+		// test data policies
+		List<DataPolicy> policies = vdb.getDataPolicies();
+		assertEquals(1, policies.size());
+		assertEquals("policy1", policies.get(0).getName());
+		assertEquals("roleOne described", policies.get(0).getDescription());
+		
+		List<DataPolicy.DataPermission> permissions = policies.get(0).getPermissions();
+		assertEquals(2, permissions.size());
+		
+		for(DataPolicy.DataPermission permission: permissions) {
+			if (permission.getResourceName().equals("myTable.T1")) {
+				assertTrue(permission.isAllowRead());
+				assertFalse(permission.isAllowCreate());
+				assertFalse(permission.isAllowDelete());
+				assertFalse(permission.isAllowUpdate());				
+			}
+			else if (permission.getResourceName().equals("myTable.T2")) {
+				assertFalse(permission.isAllowRead());
+				assertFalse(permission.isAllowCreate());
+				assertTrue(permission.isAllowDelete());
+				assertFalse(permission.isAllowUpdate());
+			}
+			else {
+				fail("there are only two types of permissions");
+			}
+		}
+		
+	}
 	
 	
 	@Test public void testSessions() throws Exception{
-		Connection c = ds.getConnection("TransactionsRevisited");
+		Connection c = ds.getConnection("TransactionsRevisited"); // to create the session
 		Collection<Session> sessions = admin.getSessions();
 		
 		int size = sessions.size();
@@ -112,6 +171,7 @@
 		
 		sessions = admin.getSessions();
 		assertTrue(sessions.size() == (size-1));
+		c.close();
 	}
 	
 	
@@ -158,7 +218,7 @@
 	@Test
 	public void testCache() throws Exception {
 		Collection<String> caches = admin.getCacheTypes();
-		assertEquals(4, caches.size());
+		assertEquals(3, caches.size());
 		
 		admin.clearCache("CODE_TABLE_CACHE"); //$NON-NLS-1$
 	}
@@ -225,6 +285,9 @@
 	@Test
 	public void testGetTemplate() throws Exception {
 		Translator translator = admin.getTranslator("oracle");
+		for (String key:translator.getProperties().stringPropertyNames()) {
+			System.out.println(key+"="+translator.getPropertyValue(key));
+		}
 		assertEquals("org.teiid.translator.jdbc.oracle.OracleSQLTranslator", translator.getPropertyValue("ExtensionTranslationClassName")); //$NON-NLS-1$
 		assertEquals(true, translator.isXaCapable());
 	}
@@ -317,7 +380,7 @@
 		try {
 			admin.addTranslator("foo", "translator-jdbc"+VERSION, props);
 			fail("must have failed because no exeuction factory set");
-		}catch(Throwable e) {
+		}catch(AdminException e) {
 			
 		}
 		
@@ -332,12 +395,7 @@
 		assertEquals("org.teiid.resource.adapter.jdbc.JDBCExecutionFactory", t.getExecutionFactoryClass());
 		assertEquals("org.teiid.resource.adapter.jdbc.JDBCExecutionFactory", t.getExecutionFactoryClass());
 		
-		try {
-			admin.setTranslatorProperty("foo", "any-thing", "every-thing");
-			fail("can not set arbitary properties on translator");
-		}catch(Throwable e) {
-			
-		}
+		admin.setTranslatorProperty("foo", "any-thing", "every-thing");
 		
 		admin.deleteTranslator("foo");
 		



More information about the teiid-commits mailing list