hi

in this case, there's probably an easy way to do what you want - create a class with an empty constructor that assembles the information required.

this would be something like (this is pseudo-code but hopefully you'll get the idea)

public class MyBean {

private String url;
private Properties properties = new Properties();

public void setUrl(String url)
this.url = url;
}

public void addProperty(String key, String value) {
properties.add(key, value);
}

public DriverManagerConnectionFactory createDMCF() {
return new DriverManagerConnectionFactory(url, properties):
}
}

you can then use standard digester rules to create the object and call it'
s methods.

- robert

On Thursday, November 28, 2002, at 02:20 AM, IMCaptor wrote:

Hi robert:
  My class code is like this:

package org.apache.commons.dbcp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DriverManagerConnectionFactory implements ConnectionFactory
{

    public DriverManagerConnectionFactory(String connectUri, Properties
props) {
        _connectUri = connectUri;
        _props = props;
    }

    public DriverManagerConnectionFactory(String connectUri, String
uname, String passwd) {
        _connectUri = connectUri;
        _uname = uname;
        _passwd = passwd;
    }

    public Connection createConnection() {
        try {
            if(null == _props) {
                if((_uname == null) || (_passwd == null)) {
                    return DriverManager.getConnection(_connectUri);
                } else {
                    return
DriverManager.getConnection(_connectUri,_uname,_passwd);
                }
            } else {
                return DriverManager.getConnection(_connectUri,_props);
            }
        } catch(SQLException e) {
            throw new DbcpException(e);
        }
    }

    protected String _connectUri = null;
    protected String _uname = null;
    protected String _passwd = null;
    protected Properties _props = null;
}

this class have not the default constructor.

My xml file like this

<connection-factory>
  <url>jdbc:oracle:thin:@203.212.6.173:1521:OraTom</url>
  <properties>
    <property>
      <key>username</key>
      <value>fdasfd</value>
    </property>
    <property>
      <key>password</key>
      <value>fdaf</value>
    </property>
  </properties>
</connection-factory>

how to convert the xml to the object?

Thank u!

Best Regards
IMCaptor



-----邮件原件-----
发件人: robert burrell donkin [mailto:[EMAIL PROTECTED].
uk]
发送时间: 2002年11月28日 3:15
收件人: Jakarta Commons Users List
主题: Re: [digester help] How two construct a Object without a
defaultConstructor?


hi

it'd probably be easier for me to help if you could give some concrete
example code and xml. that way, i can talk specifically rather in
general
terms.

- robert

On Wednesday, November 27, 2002, at 03:17 AM, IMCaptor wrote:

Hi Robert:
  I don't know how to create the rule like u said:
"this rule would construct the object not on the
element start but at the element end. maybe you might need to create
the

child object on the element start in your custom rule so that's
available on the stack."

Thank u!

Best Regards
IMCaptor



-----邮件原件-----
发件人: robert burrell donkin
[mailto:[EMAIL PROTECTED].
uk]
发送时间: 2002年11月26日 2:40
收件人: Jakarta Commons Users List
主题: Re: [digester help] How two construct a Object without a
defaultConstructor?


let's see if i have this right...

you have a child object that you need to create before you can
construct

the father object. the element for the father object enclosed the
element(
s) which are used to create the child object.

if this is the case, then i'd suggest that you look at creating you
own object creation rule. this rule would construct the object not on
the element start but at the element end. maybe you might need to
create the

child object on the element start in your custom rule so that's
available on the stack.

i'll not speculate further but if you do need any help in creating
this custom rule, then just post your questions to the list.

- robert

On Monday, November 25, 2002, at 02:28 AM, IMCaptor wrote:

Thank u for ur help,
But I have another problem,
Because the Attributes I transfer into the constructor are not only
String, but have complicate class, such as Properties. How do I first

construct the child Object, and then transfer the child Object into
the father Constructor.


Best Regards
IMCaptor



-----邮件原件-----
发件人: Simon Kitching [mailto:[EMAIL PROTECTED]]
发送时间: 2002年11月25日 4:32
收件人: Jakarta Commons Users List
主题: Re: [digest help] How two construct a Object without a
defaultConstructor?


Hi "IMCaptor" (what an unusual name you have :-)

What you need is the FactoryCreateRule.

Step 1:
Write a class which extends
org.apache.commons.digester.AbstractObjectCreationFactory.

Implement the createObject method.

Step 2:
call method addFactoryCreateRule on your digester instance to set up
the appropriate rule.

See the javadoc for class FactoryCreateRule for more info.

Regards,

Simon

On Mon, 2002-11-25 at 03:04, 王红宝 wrote:
Hi All:
  I want to config the connection factory with a xml file, and want
to

parse the file with digest. But the
org.apache.commons.dbcp.DriverManagerConnectionFactory
has not default constructor,
How can I do this?

this java file has two contructor

public DriverManagerConnectionFactory(String connectUri, Properties
props) {
        _connectUri = connectUri;
        _props = props;
    }
    public DriverManagerConnectionFactory(String connectUri, String
uname, String passwd) {
        _connectUri = connectUri;
        _uname = uname;
        _passwd = passwd;
    }

and my xml file like this
<connnection-factory>
  <connection-uri>jdbc:tset:fasdf</connection-uri>
  <properties>
    <property key="fdaf" value="fdasf"><property>
    ................
  </properties>
</connection-factory>

the class DriverManagerConnectionFactory has no public getter and
setter.


Thank u!

IMCaptor
Best Regards


--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED].
org>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED].
org>


--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED].
org>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED].
org>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to