diff --git a/runtime/src/main/java/org/teiid/deployers/TranslatorUtil.java b/runtime/src/main/java/org/teiid/deployers/TranslatorUtil.java index 57c73e601f..0d2bd92484 100644 --- a/runtime/src/main/java/org/teiid/deployers/TranslatorUtil.java +++ b/runtime/src/main/java/org/teiid/deployers/TranslatorUtil.java @@ -315,15 +315,18 @@ private static void readTranslatorPropertyAsExtendedMetadataProperties( Class clazz) { Map tps = TranslatorUtil.getTranslatorProperties(clazz); for (Method m:tps.keySet()) { + Object defaultValue = getDefaultValue(instance, m, tps.get(m)); - if (defaultValue != null) { - metadata.addProperty(getPropertyName(m), defaultValue.toString()); - } TranslatorProperty tp = tps.get(m); + boolean importProperty = tp.category()==TranslatorProperty.PropertyType.IMPORT; + if (defaultValue != null && !importProperty) { + metadata.addProperty(getPropertyName(m), defaultValue.toString()); + } + ExtendedPropertyMetadata epm = new ExtendedPropertyMetadata(); epm.category = tp.category().name(); - epm.name = tp.category()==TranslatorProperty.PropertyType.IMPORT?"importer."+getPropertyName(m):getPropertyName(m); //$NON-NLS-1$ + epm.name = importProperty?"importer."+getPropertyName(m):getPropertyName(m); //$NON-NLS-1$ epm.description = tp.description(); epm.advanced = tp.advanced(); if (defaultValue != null) { diff --git a/runtime/src/test/java/org/teiid/deployers/TestTranslatorUtil.java b/runtime/src/test/java/org/teiid/deployers/TestTranslatorUtil.java index 1e462a68ae..ac3048af7d 100644 --- a/runtime/src/test/java/org/teiid/deployers/TestTranslatorUtil.java +++ b/runtime/src/test/java/org/teiid/deployers/TestTranslatorUtil.java @@ -27,7 +27,12 @@ import java.util.ArrayList; import org.junit.Test; +import org.mockito.Mockito; import org.teiid.adminapi.impl.VDBTranslatorMetaData; +import org.teiid.logging.LogConstants; +import org.teiid.logging.LogManager; +import org.teiid.logging.Logger; +import org.teiid.logging.MessageLevel; import org.teiid.metadata.Column; import org.teiid.metadata.ExtensionMetadataProperty; import org.teiid.metadata.MetadataFactory; @@ -95,6 +100,25 @@ public void testImportProperties() throws Exception { assertEquals("default-import-property", importProperties.get(0).defaultValue); } + @Test + public void testInject() throws Exception { + VDBTranslatorMetaData tm = new VDBTranslatorMetaData(); + tm.setExecutionFactoryClass(MyTranslator.class); + tm.addProperty("MyProperty", "correctly-assigned"); + + MyTranslator my = (MyTranslator)TranslatorUtil.buildExecutionFactory(tm); + assertEquals("correctly-assigned", my.getMyProperty()); + + VDBTranslatorMetaData metadata = TranslatorUtil.buildTranslatorMetadata(my, "my-module"); + metadata.addProperty("MyProperty", "correctly-assigned"); + + Logger logger = Mockito.mock(Logger.class); + Mockito.stub(logger.isEnabled(Mockito.anyString(), Mockito.anyInt())).toReturn(true); + Mockito.doThrow(new RuntimeException("fail")).when(logger).log(Mockito.eq(MessageLevel.WARNING), Mockito.eq(LogConstants.CTX_RUNTIME), Mockito.anyString()); + LogManager.setLogListener(logger); + TranslatorUtil.buildExecutionFactory(metadata); + } + @Test public void testExtensionMetadataProperties() throws Exception { VDBTranslatorMetaData tm = new VDBTranslatorMetaData();