public boolean hasProperty( Object root, String propName ) { BeanInjectionInfo.Property prop = info.getProperties().get( propName ); return prop != null; }
public Object getObject( Object root, String propName ) throws Exception { BeanInjectionInfo.Property prop = info.getProperties().get( propName ); if ( prop == null ) { throw new RuntimeException( "Property not found" ); } BeanLevelInfo beanLevelInfo = prop.path.get( 1 ); return beanLevelInfo.field.get( root ); }
/** * Retrieves the raw prop value from root object. * <p> * The similar {@link #getProperty(Object, String)} method (also in this class )should be * revisited and possibly eliminated. That version attempts to retrieve indexed prop * vals from lists/arrays, but doesn't provide a way to retrieve the list or array objects * themselves. */ public Object getPropVal( Object root, String propName ) { Queue<BeanLevelInfo> beanInfos = newLinkedList( Optional.ofNullable( info.getProperties().get( propName ) ) .orElseThrow( () -> new IllegalArgumentException( "Property not found: " + propName ) ) .path ); beanInfos.remove(); // pop off root return getPropVal( root, propName, beanInfos ); }
public static Set<TargetStepAttribute> getUnavailableTargetKeys( Map<TargetStepAttribute, SourceStepField> targetMap, TransMeta injectedTransMeta, Set<TargetStepAttribute> unavailableTargetSteps ) { Set<TargetStepAttribute> missingKeys = new HashSet<>(); Map<String, BeanInjectionInfo> beanInfos = getUsedStepBeanInfos( injectedTransMeta ); for ( TargetStepAttribute key : targetMap.keySet() ) { if ( !unavailableTargetSteps.contains( key ) ) { BeanInjectionInfo info = beanInfos.get( key.getStepname().toUpperCase() ); if ( info != null && !info.getProperties().containsKey( key.getAttributeKey() ) ) { missingKeys.add( key ); } } } return missingKeys; }
/** * 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; }
public Object getProperty( Object root, String propName ) throws Exception { List<Integer> extractedIndexes = new ArrayList<>(); BeanInjectionInfo.Property prop = info.getProperties().get( propName ); if ( prop == null ) { throw new RuntimeException( "Property not found" );
@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() ); }
public void setProperty( Object root, String propName, List<RowMetaAndData> data, String dataN ) throws KettleException { BeanInjectionInfo.Property prop = info.getProperties().get( propName ); if ( prop == null ) { throw new KettleException( "Property '" + propName + "' not found for injection to " + root.getClass() );
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 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" ) ); }