Digester: create parent from child node value

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Digester: create parent from child node value

Valerio
Hello,
i'm using digester to parse this kind ofxml:

<parameters  type="RenameRelationOperatorParameter">
    <param>newName</param>
</parameters>

there are different kind of types. Now, the value of the parameters should
be used on the
1-arg constructor for objects of type RenameRelationOperatorParameter. At
this time, there are no setParam method, and i' searching for a solution
that avoid adding them.

in my digesterReader at this time i have this (reduced to show the problem)
:

digester.addFactoryCreate("parameters", new OperatorParameterFactory());

and the OperatorParameterFactory is:
    public static class OperatorParameterFactory extends
AbstractObjectCreationFactory {

      @Override
      public Object createObject(Attributes arg0) throws Exception {
          String operatorType = arg0.getValue("type");
          OperatorParameter result = null;

          try {
            result = (OperatorParameter) Class.forName
(operatorType).newInstance();
          }catch ( ClassNotFoundException e) {
            throw new UnsupportedOperationException("OperatorParameter named
"+operatorType+" is not supported yet");
          }

          return result;
      }

  }

thanks for any support you can provide,
valerio
--
To Iterate is Human, to Recurse, Divine
James O. Coplien, Bell Labs
Reply | Threaded
Open this post in threaded view
|

Re: Digester: create parent from child node value

Valerio
Hello,
this is my first post to the commons ml, thanks for the support.

i'm willing to use digester to parse this kind ofxml:

<parameters  type="RenameRelationOperatorParameter">
    <param>newName</param>
</parameters>

there could be different kind of type values.

Now, the value of the parameters should be used on the
1-arg constructor for objects of type RenameRelationOperatorParameter. At
this time, there are no setParam method, and i' searching for a solution
that avoid adding them.

in my digesterReader at this time i have this (reduced to show the problem)
:

digester.addFactoryCreate("parameters", new OperatorParameterFactory());

and the OperatorParameterFactory is:
    public static class OperatorParameterFactory extends
AbstractObjectCreationFactory {

      @Override
      public Object createObject(Attributes arg0) throws Exception {
          String operatorType = arg0.getValue("type");
          OperatorParameter result = null;

          try {
            result = (OperatorParameter) Class.forName
(operatorType).newInstance();
          }catch ( ClassNotFoundException e) {
            throw new UnsupportedOperationException("OperatorParameter named
"+operatorType+" is not supported yet");
          }

          return result;
      }

  }

thanks for any support you can provide,
valerio

--
To Iterate is Human, to Recurse, Divine
James O. Coplien, Bell Labs