Subject: RE: Accessing External Java Library
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 2 Nov 2007 17:06:01 -0000
|
Right, so it's an instance-level method and therefore the call needs to
supply an extra parameter, which is the object instance.
I would expect to see something like:
<xsl:variable name="instance" select="PGP:new()"/>
<xsl:variable name="encryptData"
select="PGP:encrypt($instance, $passphrase, $datain, $keyring,
$filename)"/>
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Carl Bourne [mailto:cbourne@xxxxxxxxxxxxxxx]
> Sent: 02 November 2007 16:23
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Accessing External Java Library
>
> Hi Michael,
>
> The Java signature method for the method we are calling is:
>
> encrypt(string, string, string, string)
>
> which is declared as the following in the iPGP java class:
>
> public native int encrypt(String passphraseoruid, String
> datain, String pgpkeyring, String outputfilename);
>
> Regards,
>
>
> 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: 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: 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: 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/
|