I obviously need to check my email quicker.  I didn't see this unbelievably 
awesome email with the info.  I'm definitely going to put this to work.  Excuse 
my ignorance for not seeing it and thinking that I had actually figured 
soemthing out on my own.   Wally
 > From: j...@xamarin.com
> Date: Thu, 21 Jun 2012 14:45:35 -0400
> To: monodroid@lists.ximian.com
> Subject: Re: [mono-android] java binding library
> 
> On Jun 21, 2012, at 2:19 PM, Wally McClure wrote:
> > I decided to go back to the drawing board and create some simple .jar files 
> > that I could transform and then be less of a hassle.  I have a method 
> > called: multiplefloat which takes two floats and multiplies them together 
> > and returns a float.  I'd like to rename that method to MultipleFloat in 
> > the .NET side because I am a bad java programmer.  I've tried the following 
> > transforms in the Metadata.xml file with no luck.  Any suggestions?
> >  
> > <metadata>
> > <attr 
> > path="/api/package[@name='com.scalabledevelopment.math.operations.multiplyfloat']"name="managedName">Com.Scalabledevelopment.Math.Operations.MultiplyFloat</attr>
> > <attr
> > path="/api/package[@name='com.scalabledevelopment.math.operations']/class[@name='multiplyfloat']"name="managedName">Com.Scalabledevelopment.Math.Operations.MultiplyFloat</attr>
> > </metadata>
> 
> Looks like a job for...clearer docs. Now if I only knew how to clarify the 
> docs...
> 
> First up is that the metadata path is intimately tied to the input file, 
> which is obj/Debug/api.xml. You generally need to have api.xml open while 
> writing Metadata.xml.
> 
> Secondly is the structure of api.xml:
> 
>       <api>
>               <package name="PACKAGE-NAME">
>                       <class name="CLASS-NAME" ...>
>                               <method name="METHOD-NAME" ...>
>                               </method>
>                       </class>
>               </package>
>       </api>
> 
> For example, consider java.lang.Object.toString():
> 
>       http://developer.android.com/reference/java/lang/Object.html#toString()
> 
> PACKAGE-NAME will be "java.lang", CLASS-NAME will be "Object", and 
> METHOD-NAME will be "toString".
> 
> Now suppose we wanted to rename the toString() method. How would we select 
> it? The XPath to reach the <method/> element is 
> /api/package[@name='java.lang']/class[@name='Object']/method[@name='toString'],
>  so that's what we need to use:
> 
>       <attr
>               
> path="/api/package[@name='java.lang']/class[@name='Object']/method[@name='toString']"
>               name="managedName"
>       >NewMethodName</attr>
> 
> Note that ANY XPath is valid; we could have instead done:
> 
>       <attr
>               path="//method[@name='toString']"
>               name="managedName"
>       >NewMethodName</attr>
> 
> This has the benefit that it would rename ALL toString() methods. This has 
> the disadvantage that it's _slow_, at least when processing gigantic APIs 
> like android.jar. ;-) (This is why all of our samples use fully qualified 
> XPath expressions, because trying to use XPath abbreviations results in more 
> twiddling of fingers.)
> 
> Next, what value can we use for managedName? It needs to be a valid C# token 
> for a method name. "NewMethodName" works; "Some.Dotted.Name" will not work, 
> because the resulting C# code will be invalid, akin to:
> 
>       public string Some.Dotted.Name () {/* ... */}
> 
> With that background out of the way, let's look at your description:
> 
> > I have a method called: multiplefloat which takes two floats and multiplies 
> > them together and returns a float
> 
> So "multiplefloat" is a method.
> 
> However, when we look at your path expression:
> 
>       <attr
>               
> path="/api/package[@name='com.scalabledevelopment.math.operations.multiplyfloat']"
>               name="managedName"
>       >Com.Scalabledevelopment.Math.Operations.MultiplyFloat</attr>
> 
> The problem is that what you wrote doesn't match what you wrote; you said you 
> have a method, yet your XPath expression will be selecting a package element, 
> not a method. In all likelihood, the above XPath expression doesn't match 
> anything, which should generate a warning that the expression matched no 
> elements.
> 
> I would guess that what you actually want is:
> 
>       <attr
>               
> path="/api/package[@name='com.scalabledevelopment.math']/class[@name='operations']/method[@name='multiplyfloat']"
>               name="managedName"
>       >MultiplyFloat</attr>
> 
> Note that we separately specify the package name, class name, and method 
> name, as is required in order for XPath to actually match the desired api.xml 
> element. Further note that we're using a valid C# method name of 
> "MultiplyFloat".
> 
>  - Jon
> 
> _______________________________________________
> Monodroid mailing list
> Monodroid@lists.ximian.com
> 
> UNSUBSCRIBE INFORMATION:
> http://lists.ximian.com/mailman/listinfo/monodroid
                                          
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to