/** * Sets the properties of this StepMetaProps on {@param stepMetaInterface} * <p> * This method mutates the stepMeta, as opposed to returning a new instance, to match * more cleanly to Kettle's {@link StepMetaInterface#loadXML} design, which loads props into * an instance. */ public StepMetaInterface to( StepMetaInterface stepMetaInterface ) { BeanInjectionInfo info = new BeanInjectionInfo( stepMetaInterface.getClass() ); BeanInjector injector = new BeanInjector( info ); info.getProperties().values().forEach( property -> assignValueForProp( property, stepMetaInterface, injector ) ); return stepMetaInterface; }
private static Map<String, BeanInjectionInfo> getUsedStepBeanInfos( TransMeta transMeta ) { Map<String, BeanInjectionInfo> res = new HashMap<>(); for ( StepMeta step : transMeta.getUsedSteps() ) { Class<? extends StepMetaInterface> stepMetaClass = step.getStepMetaInterface().getClass(); if ( BeanInjectionInfo.isInjectionSupported( stepMetaClass ) ) { res.put( step.getName().toUpperCase(), new BeanInjectionInfo( stepMetaClass ) ); } } return res; }
/** * Retuns an instance of this class with stepMeta properties mapped * to a list of {@link PropGroup} */ public static StepMetaProps from( StepMetaInterface stepMeta ) { StepMetaProps propMap = new StepMetaProps( stepMeta ); propMap.stepMeta = stepMeta; // use metadata injection to extract properties BeanInjectionInfo info = new BeanInjectionInfo( stepMeta.getClass() ); BeanInjector injector = new BeanInjector( info ); propMap.populateGroups( stepMeta, info, injector ); return propMap; }
private static BeanInjector buildBeanInjectorFor( Class<?> clazz ) { BeanInjectionInfo metaBeanInfo = new BeanInjectionInfo( clazz ); return new BeanInjector( metaBeanInfo ); }
protected void setup( T meta ) { KettleLogStore.init(); this.meta = meta; info = new BeanInjectionInfo( meta.getClass() ); injector = new BeanInjector( info ); nonTestedProperties = new HashSet<>( info.getProperties().keySet() ); }
@Test public void testWrongDeclarations() throws Exception { try { new BeanInjectionInfo( MetaBeanWrong1.class ); fail(); } catch ( Exception ex ) { new BeanInjectionInfo( MetaBeanWrong2.class ); fail(); } catch ( Exception ex ) { new BeanInjectionInfo( MetaBeanWrong3.class ); fail(); } catch ( Exception ex ) { new BeanInjectionInfo( MetaBeanWrong4.class ); fail(); } catch ( Exception ex ) { new BeanInjectionInfo( MetaBeanWrong5.class ); fail(); } catch ( Exception ex ) { new BeanInjectionInfo( MetaBeanWrong6.class ); fail(); } catch ( Exception ex ) { new BeanInjectionInfo( MetaBeanWrong7.class ); fail(); } catch ( Exception ex ) {
logDetailed( "Handing step '" + targetStep + "' constants injection!" ); BeanInjectionInfo injectionInfo = new BeanInjectionInfo( targetStepMeta.getClass() ); BeanInjector injector = new BeanInjector( injectionInfo );
@Test public void testGenerics() throws Exception { BeanInjectionInfo ri = new BeanInjectionInfo( MetaBeanChild.class ); assertTrue( ri.getProperties().size() == 7 ); assertTrue( ri.getProperties().containsKey( "BASE_ITEM_NAME" ) ); assertTrue( ri.getProperties().containsKey( "ITEM_CHILD_NAME" ) ); assertTrue( ri.getProperties().containsKey( "A" ) ); assertTrue( ri.getProperties().containsKey( "ITEM.BASE_ITEM_NAME" ) ); assertTrue( ri.getProperties().containsKey( "ITEM.ITEM_CHILD_NAME" ) ); assertTrue( ri.getProperties().containsKey( "SUB.BASE_ITEM_NAME" ) ); assertTrue( ri.getProperties().containsKey( "SUB.ITEM_CHILD_NAME" ) ); assertEquals( String.class, ri.getProperties().get( "A" ).getPropertyClass() ); }
private void processNewMDIDescription( StepMeta stepMeta, TreeItem stepItem, StepMetaInterface metaInterface ) { BeanInjectionInfo stepInjectionInfo = new BeanInjectionInfo( metaInterface.getClass() ); for ( BeanInjectionInfo.Group gr : stepInjectionInfo.getGroups() ) { boolean rootGroup = StringUtils.isEmpty( gr.getName() ); TreeItem groupItem; if ( !rootGroup ) { groupItem = new TreeItem( stepItem, SWT.NONE ); groupItem.setText( gr.getName() ); groupItem.setText( 1, gr.getDescription() ); } else { groupItem = null; } for ( BeanInjectionInfo.Property property : gr.getGroupProperties() ) { TreeItem treeItem = new TreeItem( rootGroup ? stepItem : groupItem, SWT.NONE ); treeItem.setText( property.getName() ); treeItem.setText( 1, property.getDescription() ); TargetStepAttribute target = new TargetStepAttribute( stepMeta.getName(), property.getName(), !rootGroup ); treeItemTargetMap.put( treeItem, target ); SourceStepField source = targetSourceMapping.get( target ); if ( source != null ) { treeItem.setText( 2, Const.NVL( source.getStepname() == null ? CONST_VALUE : source.getStepname(), "" ) ); treeItem.setText( 3, Const.NVL( source.getField(), "" ) ); } } } }
logDetailed( "Handing step '" + targetStep + "' injection!" ); BeanInjectionInfo injectionInfo = new BeanInjectionInfo( targetStepMeta.getClass() ); BeanInjector injector = new BeanInjector( injectionInfo );
@Test public void testInjectionDescription() throws Exception { BeanInjectionInfo ri = new BeanInjectionInfo( MetaBeanLevel1.class ); assertEquals( 3, ri.getGroups().size() ); assertEquals( "", ri.getGroups().get( 0 ).getName() ); assertEquals( "FILENAME_LINES", ri.getGroups().get( 1 ).getName() ); assertEquals( "FILENAME_LINES2", ri.getGroups().get( 2 ).getName() ); assertTrue( ri.getProperties().containsKey( "SEPARATOR" ) ); assertTrue( ri.getProperties().containsKey( "FILENAME" ) ); assertTrue( ri.getProperties().containsKey( "BASE" ) ); assertTrue( ri.getProperties().containsKey( "FIRST" ) ); assertEquals( "FILENAME_LINES", ri.getProperties().get( "FILENAME" ).getGroupName() ); assertEquals( "!DESCRIPTION!", ri.getDescription( "DESCRIPTION" ) ); }