Hi! I checked everything again, and purchaseDate is the only timestamp column. The converter is specified in the config-file: <Column columnName="PURCHASEDATE" propertyName="purchaseDate" converterClassName="bigbank.account.services.accountdata.AccountDataServiceDASImpl$DateConverter"/>
I use the sample as it is in tuscany-sca-1.0-incubator-M2-sample-src.zip. Now I tried to change the select-statement to avoid reading of purchaseDate (in AccountDataServiceDASImpl.java: getAccountReport) Old: select = das.createCommand("SELECT Symbol, quantity, purchasePrice, purchaseDate, purchaseLotNumber FROM stocks where id = ?"); New: select = das.createCommand("SELECT Symbol, quantity, purchasePrice, purchaseLotNumber FROM stocks where id = ?"); With that change, the webapp works. But to use DAS in my own application I need access to timestamp columns in a MySQL database. Has anybody an example where this works or any idea how to do or test it? Thanks, Katja -------- Original-Nachricht -------- Datum: Mon, 13 Nov 2006 09:18:19 -0500 Von: "Brent Daniel" <[EMAIL PROTECTED]> An: tuscany-dev@ws.apache.org Betreff: Re: Problem with DAS Timestamp Converter > Katja, > > That's one ugly stack trace! It definitely looks like the converter > isn't being called. The DateConverter in BigBank will always return a > String, so there's no chance of the data being of type > java.sql.TimeStamp. I'm at a loss for how this could happen, as any > failure in loading a converter would cause an error upstream (we have > unit tests that cover this.) All I can suggest as far as debugging is > to double check that purchaseDate was the only column created as a > timestamp column in the stocks table, and make sure the converter is > still specified in the DAS config xml file. > > Brent > > On 11/13/06, Katja <[EMAIL PROTECTED]> wrote: > > Hi! > > > > I tried to change the bigbank-sample to use MySQL instead of Derby. I > changed AccountDBInit and AccountDataServiceDASImpl. AccountDBInit works > perfectly, but I have problems with reading from the stocks table. > > When I start the webapp and log in, I get the following error: > > > > java.rmi.RemoteException: getAccountReport failed. customerID > ('1')java.lang.ClassCastException'. java.sql.Timestamp; > > > > Maybe there is something wrong with the DateConverter? I tested with > logging and some System.out.println() in the Converter, but the statements > were never reached. > > > > Any solutions or ideas? > > > > Thanks, > > Katja > > > > Here is the full stacktrace: > > > > org.apache.tuscany.spi.wire.InvocationRuntimeException: > org.apache.tuscany.spi.wire.InvocationRuntimeException: > java.rmi.RemoteException: > getAccountReport failed. customerID ('1')java.lang.ClassCastException'. > java.sql.Timestamp; nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:76) > > at > org.apache.tuscany.spi.wire.AbstractOutboundInvocationHandler.invoke( > > AbstractOutboundInvocationHandler.java:60) > > at > org.apache.tuscany.core.wire.jdk.JDKOutboundInvocationHandler.invoke( > > JDKOutboundInvocationHandler.java:121) > > at $Proxy38.getAccountReport(Unknown Source) > > at > bigbank.account.services.account.AccountServiceImpl.getAccountReport( > > AccountServiceImpl.java:113) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invokeTarget(PojoTargetInvoker.java:63) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invoke(PojoTargetInvoker.java:72) > > at > org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterceptor.java:44) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:71) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.binding.axis2.Axis2Service.invokeTarget(Axis2Service.java:215) > > at > org.apache.tuscany.binding.axis2.Axis2ServiceInOutSyncMessageReceiver > > .invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:53) > > at > org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(A > > bstractInOutSyncMessageReceiver.java:39) > > at > org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167) > > at > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostReq > > uest(HTTPTransportUtils.java:324) > > at > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:235) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) > > at > org.apache.tuscany.binding.axis2.Axis2ServiceServlet.service(Axis2ServiceServlet.java:204) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > at > org.apache.tuscany.runtime.webapp.ServletHostImpl.service(ServletHostImpl.java:88) > > at > org.apache.tuscany.runtime.webapp.TuscanyServlet.service(TuscanyServlet.java:56) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl > > icationFilterChain.java:252) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) > > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) > > at > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p > > rocessConnection(Http11BaseProtocol.java:664) > > at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) > > at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) > > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) > > at java.lang.Thread.run(Thread.java:595) > > Caused by: org.apache.tuscany.spi.wire.InvocationRuntimeException: > java.rmi.RemoteException: getAccountReport failed. customerID > ('1')java.lang.ClassCastException'. java.sql.Timestamp; nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:76) > > at > org.apache.tuscany.spi.wire.AbstractOutboundInvocationHandler.invoke( > > AbstractOutboundInvocationHandler.java:60) > > at > org.apache.tuscany.core.wire.jdk.JDKOutboundInvocationHandler.invoke( > > JDKOutboundInvocationHandler.java:121) > > at $Proxy39.getAccountReport(Unknown Source) > > at > bigbank.account.services.accountlogger.AccountLoggerDataServiceImpl.g > > etAccountReport(AccountLoggerDataServiceImpl.java:123) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invokeTarget(PojoTargetInvoker.java:63) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invoke(PojoTargetInvoker.java:72) > > at > org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterceptor.java:44) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:71) > > ... 39 more > > Caused by: java.rmi.RemoteException: getAccountReport failed. customerID > ('1')java.lang.ClassCastException'. java.sql.Timestamp; nested exception > is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > bigbank.account.services.accountdata.AccountDataServiceDASImpl.getAcc > > ountReport(AccountDataServiceDASImpl.java:197) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invokeTarget(PojoTargetInvoker.java:63) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invoke(PojoTargetInvoker.java:72) > > at > org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterceptor.java:44) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:71) > > ... 52 more > > Caused by: java.lang.ClassCastException: java.sql.Timestamp > > at > com.bigbank.account.impl.StockSummaryImpl.eSet(StockSummaryImpl.java:468) > > at > org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:654) > > at > org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:143) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.DataObjectMaker.createAn > > dAddDataObject(DataObjectMaker.java:91) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.ResultSetProcessor.addRo > > wToGraph(ResultSetProcessor.java:125) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.ResultSetProcessor.proce > > ssResultSet(ResultSetProcessor.java:96) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.ResultSetProcessor.proce > > ssResults(ResultSetProcessor.java:82) > > at > org.apache.tuscany.das.rdb.impl.ReadCommandImpl.buildGraph(ReadCommandImpl.java:95) > > at > org.apache.tuscany.das.rdb.impl.ReadCommandImpl.executeQuery(ReadCommandImpl.java:63) > > at > bigbank.account.services.accountdata.AccountDataServiceDASImpl.getAcc > > ountReport(AccountDataServiceDASImpl.java:187) > > ... 61 more > > org.apache.tuscany.spi.wire.InvocationRuntimeException: > java.rmi.RemoteException > > : class org.apache.tuscany.spi.wire.InvocationRuntimeException > org.apache.tuscany.spi.wire.InvocationRuntimeException: > java.rmi.RemoteException: > getAccountRepor > > t failed. customerID ('1')java.lang.ClassCastException'. > java.sql.Timestamp; nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp; nested > exception is: > > org.apache.tuscany.spi.wire.InvocationRuntimeException: > org.apache.tuscany.spi.wire.InvocationRuntimeException: > java.rmi.RemoteException: > getAccountRepo > > rt failed. customerID ('1')java.lang.ClassCastException'. > java.sql.Timestamp; ne > > sted exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:76) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.binding.axis2.Axis2Service.invokeTarget(Axis2Servi > > ce.java:215) > > at > org.apache.tuscany.binding.axis2.Axis2ServiceInOutSyncMessageReceiver > > .invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:53) > > at > org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(A > > bstractInOutSyncMessageReceiver.java:39) > > at > org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167) > > at > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostReq > > uest(HTTPTransportUtils.java:324) > > at > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:2 > > 35) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) > > at > org.apache.tuscany.binding.axis2.Axis2ServiceServlet.service(Axis2Ser > > viceServlet.java:204) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > at > org.apache.tuscany.runtime.webapp.ServletHostImpl.service(ServletHost > > Impl.java:88) > > at > org.apache.tuscany.runtime.webapp.TuscanyServlet.service(TuscanyServl > > et.java:56) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl > > icationFilterChain.java:252) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF > > ilterChain.java:173) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV > > alve.java:213) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextV > > alve.java:178) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j > > ava:126) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j > > ava:105) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal > > ve.java:107) > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav > > a:148) > > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java > > :869) > > at > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p > > rocessConnection(Http11BaseProtocol.java:664) > > at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo > > int.java:527) > > at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol > > lowerWorkerThread.java:80) > > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP > > ool.java:684) > > at java.lang.Thread.run(Thread.java:595) > > Caused by: java.rmi.RemoteException: class > org.apache.tuscany.spi.wire.Invocatio > > nRuntimeException > org.apache.tuscany.spi.wire.InvocationRuntimeException: java.r > > mi.RemoteException: getAccountReport failed. customerID > ('1')java.lang.ClassCast > > Exception'. java.sql.Timestamp; nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp; nested > exception is: > > org.apache.tuscany.spi.wire.InvocationRuntimeException: > org.apache.tusca > > ny.spi.wire.InvocationRuntimeException: java.rmi.RemoteException: > getAccountRepo > > rt failed. customerID ('1')java.lang.ClassCastException'. > java.sql.Timestamp; ne > > sted exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > bigbank.account.services.account.AccountServiceImpl.getAccountReport( > > AccountServiceImpl.java:126) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. > > java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces > > sorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invokeTarget(PojoTarge > > tInvoker.java:63) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invoke(PojoTargetInvok > > er.java:72) > > at > org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterce > > ptor.java:44) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:71) > > ... 26 more > > Caused by: org.apache.tuscany.spi.wire.InvocationRuntimeException: > org.apache.tu > > scany.spi.wire.InvocationRuntimeException: java.rmi.RemoteException: > getAccountR > > eport failed. customerID ('1')java.lang.ClassCastException'. > java.sql.Timestamp; > > nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:76) > > at > org.apache.tuscany.spi.wire.AbstractOutboundInvocationHandler.invoke( > > AbstractOutboundInvocationHandler.java:60) > > at > org.apache.tuscany.core.wire.jdk.JDKOutboundInvocationHandler.invoke( > > JDKOutboundInvocationHandler.java:121) > > at $Proxy38.getAccountReport(Unknown Source) > > at > bigbank.account.services.account.AccountServiceImpl.getAccountReport( > > AccountServiceImpl.java:113) > > ... 35 more > > Caused by: org.apache.tuscany.spi.wire.InvocationRuntimeException: > java.rmi.Remo > > teException: getAccountReport failed. customerID > ('1')java.lang.ClassCastExcepti > > on'. java.sql.Timestamp; nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:76) > > at > org.apache.tuscany.spi.wire.AbstractOutboundInvocationHandler.invoke( > > AbstractOutboundInvocationHandler.java:60) > > at > org.apache.tuscany.core.wire.jdk.JDKOutboundInvocationHandler.invoke( > > JDKOutboundInvocationHandler.java:121) > > at $Proxy39.getAccountReport(Unknown Source) > > at > bigbank.account.services.accountlogger.AccountLoggerDataServiceImpl.g > > etAccountReport(AccountLoggerDataServiceImpl.java:123) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. > > java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces > > sorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invokeTarget(PojoTarge > > tInvoker.java:63) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invoke(PojoTargetInvok > > er.java:72) > > at > org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterce > > ptor.java:44) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:71) > > ... 39 more > > Caused by: java.rmi.RemoteException: getAccountReport failed. customerID > ('1')ja > > va.lang.ClassCastException'. java.sql.Timestamp; nested exception is: > > java.lang.ClassCastException: java.sql.Timestamp > > at > bigbank.account.services.accountdata.AccountDataServiceDASImpl.getAcc > > ountReport(AccountDataServiceDASImpl.java:197) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. > > java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces > > sorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invokeTarget(PojoTarge > > tInvoker.java:63) > > at > org.apache.tuscany.core.wire.PojoTargetInvoker.invoke(PojoTargetInvok > > er.java:72) > > at > org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterce > > ptor.java:44) > > at > org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy > > nchronousBridgingInterceptor.java:41) > > at > org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke > > (DataBindingInteceptor.java:71) > > ... 52 more > > Caused by: java.lang.ClassCastException: java.sql.Timestamp > > at > com.bigbank.account.impl.StockSummaryImpl.eSet(StockSummaryImpl.java: > > 468) > > at > org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.jav > > a:654) > > at > org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:14 > > 3) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.DataObjectMaker.createAn > > dAddDataObject(DataObjectMaker.java:91) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.ResultSetProcessor.addRo > > wToGraph(ResultSetProcessor.java:125) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.ResultSetProcessor.proce > > ssResultSet(ResultSetProcessor.java:96) > > at > org.apache.tuscany.das.rdb.graphbuilder.impl.ResultSetProcessor.proce > > ssResults(ResultSetProcessor.java:82) > > at > org.apache.tuscany.das.rdb.impl.ReadCommandImpl.buildGraph(ReadComman > > dImpl.java:95) > > at > org.apache.tuscany.das.rdb.impl.ReadCommandImpl.executeQuery(ReadComm > > andImpl.java:63) > > at > bigbank.account.services.accountdata.AccountDataServiceDASImpl.getAcc > > ountReport(AccountDataServiceDASImpl.java:187) > > ... 61 more > > > > -- > > Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! > > Ideal f�r Modem und ISDN: http://www.gmx.net/de/go/smartsurfer > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > -- Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]