[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