RE: [xsl] Accessing External Java Library

Subject: RE: [xsl] Accessing External Java Library
From: "Carl Bourne" <cbourne@xxxxxxxxxxxxxxx>
Date: Fri, 2 Nov 2007 17:06:51 -0000
Michael,

Finally got this working... Do you know of any issues with Saxon calling
classes that use JNI?

Carl


C:\Documents and Settings\cbourne\My Documents\PGPJava>java -cp
.;C:\javapgp\iPG
P.jar net.sf.saxon.Transform -TJ pgp.xml pgp.xslt
Loading iPGP.iPGP
Looking for method new in Java class class iPGP.iPGP
Number of actual arguments = 4
Looking for a constructor
Found a constructor with 4 arguments
Found a constructor with 0 arguments
Loading iPGP.iPGP
Looking for method encrypt in Java class class iPGP.iPGP
Number of actual arguments = 5
Trying method getArmor: name does not match
Trying method setArmor: name does not match
Trying method getConventional: name does not match
Trying method setConventional: name does not match
Trying method getInputIsText: name does not match
Trying method setInputIsText: name does not match
Trying method getOutputIsText: name does not match
Trying method setOutputIsText: name does not match
Trying method getUseKeyID: name does not match
Trying method setUseKeyID: name does not match
Trying method getOutputFilename: name does not match
Trying method setOutputFilename: name does not match
Trying method getASCIIOutput: name does not match
Trying method getPGPSDKErrorMessage: name does not match
Trying method encrypt: name matches
Method is not static
Method has 4 arguments; expecting 4
Found a candidate method:
    public native int
iPGP.iPGP.encrypt(java.lang.String,java.lang.String,java.l
ang.String,java.lang.String)
Trying method encryptAndSign: name does not match
Trying method decryptAndVerify: name does not match
Trying method hashCode: name does not match
Trying method getClass: name does not match
Trying method wait: name does not match
Trying method wait: name does not match
Trying method wait: name does not match
Trying method equals: name does not match
Trying method toString: name does not match
Trying method notify: name does not match
Trying method notifyAll: name does not match
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d892b63, pid=7100,
tid=7068
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_02-b06 mixed mode)
# Problematic frame:
# V  [jvm.dll+0xd2b63]
#
# An error report file with more information is saved as
hs_err_pid7100.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

C:\Documents and Settings\cbourne\My Documents\PGPJava>


Carl Bourne
Intellect
DDI: +44 1491 842502
M: +44 7770 284294





-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: 02 November 2007 15:37
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Accessing External Java Library

Well, this is what it says:

Trying method encrypt: name matches
Method is not static
Method has 4 arguments; expecting 3

And you haven't showed us the Java method signature, so I can't advise
any
further.

Michael Kay
http://www.saxonica.com/



> -----Original Message-----
> From: Carl Bourne [mailto:cbourne@xxxxxxxxxxxxxxx]
> Sent: 02 November 2007 15:00
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Accessing External Java Library
>
> Hi Michael,
>
> I think I'm now creating an instance of the class correctly
> but I'm still getting some errors relating to a missing
> function when using non static methods.
>
> Output:
>
> C:\Documents and Settings\cbourne\My Documents\PGPJava>java
> -cp .;C:\javapgp\iPG P.jar net.sf.saxon.Transform -TJ pgp.xml
> pgp.xslt Loading iPGP.iPGP Looking for method new in Java
> class class iPGP.iPGP Number of actual arguments = 4 Looking
> for a constructor Found a constructor with 4 arguments Found
> a constructor with 0 arguments Loading iPGP.iPGP Looking for
> method encrypt in Java class class iPGP.iPGP Number of actual
> arguments = 4 Trying method getArmor: name does not match
> Trying method setArmor: name does not match Trying method
> getConventional: name does not match Trying method
> setConventional: name does not match Trying method
> getInputIsText: name does not match Trying method
> setInputIsText: name does not match Trying method
> getOutputIsText: name does not match Trying method
> setOutputIsText: name does not match Trying method
> getUseKeyID: name does not match Trying method setUseKeyID:
> name does not match Trying method getOutputFilename: name
> does not match Trying method setOutputFilename: name does not
> match Trying method getASCIIOutput: name does not match
> Trying method getPGPSDKErrorMessage: name does not match
> Trying method encrypt: name matches Method is not static
> Method has 4 arguments; expecting 3 Trying method
> encryptAndSign: name does not match Trying method
> decryptAndVerify: name does not match Trying method hashCode:
> name does not match Trying method getClass: name does not
> match Trying method wait: name does not match Trying method
> wait: name does not match Trying method wait: name does not
> match Trying method equals: name does not match Trying method
> toString: name does not match Trying method notify: name does
> not match Trying method notifyAll: name does not match No
> method or field matching encrypt with 4 parameters found in
> class iPGP.iPGP Error at xsl:variable on line 21 of
> file:/C:/Documents%20and%20Settings/cbourne/
> My%20Documents/PGPJava/pgp.xslt:
>   XPST0003: XPath syntax error at char 54 on line 21 in {...
> $datain, $keyring,
> $filena...}:
>     Cannot find a matching 4-argument function named
> {java:iPGP.iPGP}encrypt()
> Failed to compile stylesheet. 1 error detected.
>
> XSLT:
>
> <?xml version="1.0" ?>
> <xsl:stylesheet version="2.0"
>       xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>       xmlns:PGP="java:iPGP.iPGP"
>       exclude-result-prefixes="PGP">
>
>
> <xsl:template match="dataelements">
>
> <xsl:param name="passphrase">mypswd</xsl:param>
>  <xsl:param name="keyring"></xsl:param>
>  <xsl:param name="filename"></xsl:param>
>
> <xsl:value-of select="PGP:new(true(), true(), true(),
> true())" /> <!--<xsl:value-of select="PGP:setArmor(true())"
> /> <xsl:value-of select="PGP:setConventional(true())" />
> <xsl:value-of select="PGP:setInputIsText(true())" />
> <xsl:value-of select="PGP:setOutputIsText(true())"/>
> -->
>    <xsl:variable name="datain" select="data"/>
>    <xsl:variable name="encryptData"
> select="PGP:encrypt($passphrase, $datain, $keyring, $filename)"/>
>    <xsl:value-of select="$encryptData"/> </xsl:template>
> </xsl:stylesheet>
>
> XML:
>
> <dataelements>
>     <dataelement>
>         <data>New York</data>
>     </dataelement>
>     <dataelement>
>         <data>Boston</data>
>      </dataelement>
>      <dataelement>
>         <data>Denver</data>
>      </dataelement>
> </dataelements>
>
>
>
>
>
>
> Carl Bourne
> Intellect
> DDI: +44 1491 842502
> M: +44 7770 284294
>
>
>
>
>
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: 01 November 2007 17:10
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Accessing External Java Library
>
> Once again, the messages give you the information, and once
> again, it's in the checklist that I gave you earlier:
>
> > C:\Documents and Settings\cbourne\My Documents\PGPJava>java -cp
> > .;C:\javapgp\iPG P.jar net.sf.saxon.Transform -TJ pgp.xml pgp.xslt
> > Loading iPGP.iPGP Looking for method setArmor in Java class class
> > iPGP.iPGP Number of actual arguments = 1 Trying method
> getArmor: name
> > does not match Trying method
> > setArmor: name matches Method is not static
>
> If you're calling a non-static method then you need to supply
> an object instance as the first argument. The documentation
> tells you how.
>
> Michael Kay
> http://www.saxonica.com/

Current Thread