001package org.andromda.maven.plugin.andromdapp; 002 003import java.io.File; 004import java.util.Properties; 005import org.codehaus.plexus.util.introspection.ReflectionValueExtractor; 006 007/** 008 * Extends properties and allows the key to be retrieved from the given bean. 009 * 010 * @author Chad Brandon 011 */ 012public class BeanProperties 013 extends Properties 014{ 015 private static final long serialVersionUID = 34L; 016 private Object bean; 017 018 /** 019 * @param bean 020 */ 021 public BeanProperties(final Object bean) 022 { 023 this.bean = bean; 024 } 025 026 /** 027 * @see java.util.Dictionary#get(Object) 028 */ 029 public synchronized Object get(Object key) 030 { 031 Object value = null; 032 try 033 { 034 value = ReflectionValueExtractor.evaluate( 035 String.valueOf(key), 036 bean); 037 // - convert file instances to strings 038 if (value instanceof File) 039 { 040 value = ((File)value).getPath(); 041 this.put(key, value); 042 } 043 } 044 catch (Exception exception) 045 { 046 // ignore 047 } 048 return value; 049 } 050}