That's true.. But with the setter method mentioned above for list variable,
its taken care of. Though its a hack, it works..

On Fri, Mar 18, 2016 at 5:00 AM, Munagala Ramanath <[email protected]>
wrote:

> The list initialization only works when I prepopulate the list with enough
> elements
> to accomodate all the items from the property file; otherwise I get a
> failure:
>    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
>
> Ram
>
>
>
> On Thu, Mar 17, 2016 at 11:14 AM, Chinmay Kolhatkar <[email protected]>
> wrote:
>
> > @Ram, Ok. The reason why I would prefer to have property as List or Map
> is
> > because individual items may contain characters which might overlap with
> > the element separator.
> >
> > @Thomas, Can you please point me to or type in an example? I'll try that.
> > Also, is it suggested to use JSON instead of xml in such cases?
> >
> > On another note, I was looking into code and ended up with common's
> > BeanUtils, in which I found a way to set map and list by properties.xml
> as
> > well.
> > Just some special setter method needs to be there.
> >
> > So in operator, code as be as follows:
> >   private List<String> varList = new ArrayList<>();
> >   private Map<String, String> varMap = new HashMap<>();
> >
> >   public void setVarList(List<String> list) { this.varList = list; }
> >   public void setVarList(int index, String value)
> >   {
> >     for (int i=this.list.size(); i<=index; i++) {
> >       this.varList.add(null);
> >     }
> >     this.varList.set(index, value);
> >   }
> >
> >   public void setVarMap(Map<String, String> map) { this.varMap = map; }
> >   public void setVarMap(String key, String value) { this.varMap.put(key,
> > value); }
> >
> >
> > And XML file can contain property as follows:
> >   <property>
> >     <name>dt.operator.randomGenerator.varMap(abc)</name>
> >     <value>123</value>
> >   </property>
> >   <property>
> >     <name>dt.operator.randomGenerator.varMap(pqr)</name>
> >     <value>567</value>
> >   </property>
> >   <property>
> >     <name>dt.operator.randomGenerator.varList[1]</name>
> >     <value>test2</value>
> >   </property>
> >   <property>
> >     <name>dt.operator.randomGenerator.varList[0]</name>
> >     <value>test1</value>
> >   </property>
> >
> >
> > Can you please suggest if this a fine way for exposing complex operator
> > properties like map and list?
> >
> > Thanks,
> > Chinmay.
> >
> >
> > On Thu, Mar 17, 2016 at 10:04 PM, Thomas Weise <[email protected]>
> > wrote:
> >
> > > AFAIK there is a way to do it via JSON.
> > >
> > > --
> > > sent from mobile
> > > On Mar 17, 2016 9:32 AM, "Munagala Ramanath" <[email protected]>
> > wrote:
> > >
> > > > There may be a way to do this with StringCodecs but not sure of the
> > > > details.
> > > >
> > > > You could use arrays of strings as an intermediate type since these
> can
> > > be
> > > > populated by comma-separated values in the property files. Then
> convert
> > > > to List/Map as needed.
> > > >
> > > > Ram
> > > >
> > > > On Thu, Mar 17, 2016 at 2:11 AM, Chinmay Kolhatkar <
> [email protected]
> > >
> > > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > I have an operator which has setter method for properties which are
> > of
> > > > type
> > > > > List<String> and Map<String, String>.
> > > > >
> > > > > Is there any way to set these properties via properties.xml?
> > > > >
> > > > > Thanks,
> > > > > Chinmay.
> > > > >
> > > >
> > >
> >
>

Reply via email to