Hi Taras,

I think you're right, but I find weird since I have retrotranslated all
classes using the backport and target options. This is how I'm running
retrotranslator now:

$ java -jar
../Retrotranslator-1.2.6-bin/retrotranslator-transformer-1.2.6.jar -srcdir
srcdir -backport java.rmi.Remote:java.lang.Cloneable -target 1.5 -reflection
safe -stripannot -embed . -classpath
../Retrotranslator-1.2.6-bin/retrotranslator-android-1.2.6.jar -verbose

Just to double check I rebuilt my workspace and ran retrotranslator again as
shown above. I don't get any errors when running retrotranslator [1] [2] but
still get the same errors when running the calculator-android project. Also,
I checked the sizes of the translated classes and found that they are not
becoming much bigger [3] [4]. Do you think I'm missing something?

Thank you so much for all your help.

[1] http://androidindelft.googlepages.com/tuscany_android_retr_output.txt
[2] http://androidindelft.googlepages.com/tuscany_rev_retr_output.txt
[3] http://androidindelft.googlepages.com/5Jul_retrotranslated.jpg
[4] http://androidindelft.googlepages.com/5Jul_NOTtranslated.jpg


On Thu, Jul 3, 2008 at 3:44 PM, Taras Puchko <[EMAIL PROTECTED]> wrote:

> Hi Oscar,
>
> It looks like Retrotranslator haven't translated the ConversationProcessor
> class if you see the following stack trace:
>
> java.lang.UnsupportedOperationException: native method not implemented
>   at java.lang.Class.getDeclaredAnnotations(Native Method)
>   at java.lang.Class.getAnnotations(Class.java:204)
>   at java.lang.Class.getAnnotation(Class.java:187)
>   at
> org.apache.tuscany.sca.implementation.java.introspect.impl.ConversationProcessor.visitClass(ConversationProcessor.java:49)
>
> Check the size of the translated class, it should become one third bigger.
>
> If you need backport-util-concurrent-3.1.jar you have probably run
> Retrotranslator without specifying "-target 1.5". Always use "-target 1.5"
> and "-classpath retrotranslator-android-1.2.6.jar" even if repeatedly
> translating classes. However I recommend to translate code in one pass.
>
>
> Cheers,
>
> Taras
>
>
>
> On Thu, Jul 3, 2008 at 3:45 PM, Oscar Castaneda <
> [EMAIL PROTECTED]> wrote:
>
>> Hi Taras,
>>
>> Thanks for your help. I tried the -backport option on the previously
>> retrotranslated classes and received some errors that were resolved by
>> including backport-util-concurrent-3.1.jar. After that I was getting some
>> errors related to getAnnotation [1] so I tried building all the projects
>> from scratch and running retrotranslator again together with the -backport
>> option. Now I'm getting UnsupportedOperationException errors [2]. Any advice
>> you can give me will be greatly appreciated.
>>
>> [1] http://cwiki.apache.org/confluence/display/TUSCANYWIKI/30Jun2008
>> [2] http://cwiki.apache.org/confluence/display/TUSCANYWIKI/2Jul2008
>>
>>
>> On Thu, Jun 19, 2008 at 1:06 PM, Taras Puchko <[EMAIL PROTECTED]>
>> wrote:
>>
>>> I'm glad Retrotrotranslator works for you Oscar. If you just want to get
>>> rid of java.rmi.Remote you may replace it with java.lang.Cloneable using the
>>> folowing Retrotranslator option:
>>>
>>> -backport java.rmi.Remote:java.lang.Cloneable
>>>
>>> But in case you have some important code using the java.rmi package you
>>> may try to take sources of java.rmi from the Apache Harmony.
>>> Then move the sources into another package, so you'll have, for example,
>>> mypack.java.rmi, compile and jar them. After that you may use it with
>>> Retrotranslator:
>>>
>>> -backport mypack -classpath mypack.jar
>>>
>>> But this approach works only if the sources don't employ native code :)
>>>
>>> Cheers,
>>> Taras.
>>>
>>>
>>> On Wed, Jun 18, 2008 at 10:41 PM, Oscar Castaneda <
>>> [EMAIL PROTECTED]> wrote:
>>>
>>>> Thanks again for all your help Taras. After following your suggestion
>>>> and adding retrotranslator-android-1.2.6.jar as an external library (as
>>>> opposed to an external _user_ library) the retrotranslator related errors
>>>> disappeared. I'm now receiving errors about java.rmi.Remote [1], which from
>>>> what I could find is not supported in Android. I just thought I'd mention 
>>>> it
>>>> in case you have any suggestions :-)
>>>>
>>>> I will respond also on the Android Developer list as someone else might
>>>> find this useful. By mistake I sent the email only to you which I think
>>>> resulted in me being the only recipient of your response.
>>>>
>>>> Again, thanks for all your help.
>>>>
>>>> [1] http://cwiki.apache.org/confluence/display/TUSCANYWIKI/18Jun2008
>>>>
>>>>
>>>> On Tue, Jun 17, 2008 at 11:05 PM, <[EMAIL PROTECTED]> wrote:
>>>>
>>>>> I forgot to mention that you can use the embed option making inclusion
>>>>> of retrotranslator-android-1.2.6.jar into the compile path redundant.
>>>>>
>>>>> So you can add "-embed <a single dot or any package name>":
>>>>>
>>>>> java -jar
>>>>> ../Retrotranslator-1.2.6-bin/retrotranslator-transformer-1.2.6.jar
>>>>> -srcdir ../workspace -target 1.5 -reflection safe -stripannot -embed .
>>>>> -classpath
>>>>> ../Retrotranslator-1.2.6-bin/retrotranslator-android-1.2.6.jar
>>>>> -verbose
>>>>>
>>>>> On 6/17/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>>>>> > Hi Oscar,
>>>>> >
>>>>> > Unfortunately I cannot open the TUSCANY wiki at the moment but it
>>>>> looks like
>>>>> > the contents of retrotranslator-android-1.2.6.jar hasn't been
>>>>> included into
>>>>> > the dex file. Try to explicitly refer to it in your code, for
>>>>> instance, call
>>>>> >
>>>>> net.sf.retrotranslator.android.main.java.lang._Class.cast(String.class,
>>>>> > "test");
>>>>> >
>>>>> > And you needn't use the 1.4 target - only using the 1.5 one makes
>>>>> sense for
>>>>> > Android.
>>>>> >
>>>>> > Cheers,
>>>>> > Taras.
>>>>> >
>>>>> >
>>>>> > On 6/17/08, Oscar Castaneda <[EMAIL PROTECTED]> wrote:
>>>>> >> Hi Taras,
>>>>> >>
>>>>> >> Thank you so much for the detailed response.
>>>>> >>
>>>>> >> I think you're right that when I run the Android project from
>>>>> Eclipse it
>>>>> >> both compiles the sources into classes and the classes into a dex
>>>>> file. I
>>>>> >> also agree that the most elegant way would be to add the translation
>>>>> step
>>>>> >> to
>>>>> >> the ADT plugin source code, thus enabling users to run
>>>>> Retrotranslator on
>>>>> >> the sources from within Eclipse. In some cases, such as mine, this
>>>>> is
>>>>> >> preferred over manually translating libraries that contain
>>>>> annotations and
>>>>> >> then adding them to the the main project (for instance, to simplify
>>>>> >> debugging).
>>>>> >>
>>>>> >> There is a workaround to prevent classes that have already been
>>>>> translated
>>>>> >> by Retrotranslator to be recompiled from source. The workaround is
>>>>> to
>>>>> >> disable the Java Builders from within each project's properties. I
>>>>> tried
>>>>> >> this and no longer receive the Annotation error:
>>>>> >>
>>>>> >> java.lang.Class.isAnnotationPresent(Class.java:1131)
>>>>> >>
>>>>> >> However, I'm getting the error shown below (and listed on the full
>>>>> stack
>>>>> >> trace in [1]). I took care to include
>>>>> retrotranslator-android-1.2.6.jar as
>>>>> >> an external library to all Tuscany projects, including
>>>>> calculator-android,
>>>>> >> as you pointed out. Additionally, I confirmed through the timestamps
>>>>> on
>>>>> >> class files and dex file that retrotranslated classes are not being
>>>>> >> recompiled and that the dex file was generated a few minutes after
>>>>> running
>>>>> >> retrotranslator.
>>>>> >>
>>>>> >> java.lang.NoClassDefFoundError:
>>>>> >> net.sf.retrotranslator.android.main.java.lang._Class
>>>>> >>
>>>>> >> I've tried this running retrotranslator as shown below, setting the
>>>>> target
>>>>> >> to java 1.5 at first and then to 1.4.
>>>>> >>
>>>>> >> $ java -jar
>>>>> >> /../Retrotranslator-1.2.6-bin/retrotranslator-transformer-1.2.6.jar
>>>>> >> -srcdir
>>>>> >> /../workspace -target 1.5 -reflection safe -stripannot -classpath
>>>>> >> /../Retrotranslator-1.2.6-bin/retrotranslator-android-1.2.6.jar
>>>>> -verbose
>>>>> >>
>>>>> >> What could be going wrong? Any suggestions would be greatly
>>>>> appreciated.
>>>>> >>
>>>>> >> [1]
>>>>> http://cwiki.apache.org/confluence/display/TUSCANYWIKI/14Jun2008
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> On Wed, Jun 4, 2008 at 6:44 PM, Taras Puchko <
>>>>> [EMAIL PROTECTED]>
>>>>> >> wrote:
>>>>> >>
>>>>> >>> Hi Oscar,
>>>>> >>>
>>>>> >>> Retrotranslator does it's job by modifying compiled classes in the
>>>>> >>> following way:
>>>>> >>> 1. Embedding into each class its metadata (including annotations)
>>>>> as one
>>>>> >>> big character string.
>>>>> >>> 2. Replacing some method invocations, so
>>>>> >>> java.lang.Class.isAnnotationPresent is being replaced with
>>>>> >>>
>>>>> net.sf.retrotranslator.android.main.java.lang.Class.isAnnotationPresent
>>>>> >>> etc.
>>>>> >>>
>>>>> >>> So when you call getAnnotations() on a particular class the code
>>>>> from
>>>>> >>> retrotranslator-android-1.2.6.jar will parse the corresponding
>>>>> metadata
>>>>> >>> and
>>>>> >>> return the result.
>>>>> >>>
>>>>> >>> AFAIK when you run your Android project from Eclipse it both
>>>>> compiles
>>>>> >>> your
>>>>> >>> sources into classes and the classes into a dex file. So
>>>>> Retrotranslator
>>>>> >>> has
>>>>> >>> no chance to modify classes in between unless you fix the ADT
>>>>> plugin. The
>>>>> >>> workaround is not to put your sources into Eclipse and to process
>>>>> it with
>>>>> >>> javac, Retrotranslator and jar manually. After that you may add the
>>>>> jar
>>>>> >>> to
>>>>> >>> Eclipse.
>>>>> >>>
>>>>> >>> If you execute the following line you should obtain
>>>>> mytuscany-android.jar
>>>>> >>> that is one-third bigger then the original mytuscany.jar and does
>>>>> not
>>>>> >>> contain references to Java 5 reflection methods.
>>>>> >>>
>>>>> >>> java -jar retrotranslator-transformer-1.2.6.jar -srcjar
>>>>> mytuscany.jar
>>>>> >>> -destjar mytuscany-android.jar  -target 1.5 -reflection safe
>>>>> -stripannot
>>>>> >>> -classpath retrotranslator-android-1.2.6.jar
>>>>> >>>
>>>>> >>> So the line java.lang.Class.isAnnotationPresent(Class.java:1131) in
>>>>> the
>>>>> >>> stack trace means that the application is based on non-translated
>>>>> >>> binaries.
>>>>> >>> Maybe you had successfully processed your classes but Eclipse
>>>>> overwrote
>>>>> >>> them
>>>>> >>> after that or Eclipse had already created the dex file before you
>>>>> >>> executed
>>>>> >>> Retrotranslator.
>>>>> >>>
>>>>> >>> If you're using Eclipse the most elegant way would be to add the
>>>>> >>> translation step to the ADT plugin source code, but otherwise don't
>>>>> >>> include
>>>>> >>> Tuscany sources into the project, only include a jar processed by
>>>>> >>> Retrotranslator and retrotranslator-android-1.2.6.jar.
>>>>> >>>
>>>>> >>>
>>>>> >>> Cheers,
>>>>> >>> Taras.
>>>>> >>>
>>>>> >>>
>>>>> >>> On Wed, Jun 4, 2008 at 3:21 PM, <[EMAIL PROTECTED]>
>>>>> wrote:
>>>>> >>>
>>>>> >>>> Hi Taras,
>>>>> >>>>
>>>>> >>>> I'm trying to run Apache Tuscany on Android as part of my Google
>>>>> >>>> Summer of Code project: Incubating and Android in Delft [1]. I've
>>>>> run
>>>>> >>>> all the (modified) source code through retrotranslator but still
>>>>> get
>>>>> >>>> "native method not implemented" errors that I believe are related
>>>>> to
>>>>> >>>> the lack of annotations support on the current Android SDK.
>>>>> >>>>
>>>>> >>>> To test Apache Tuscany I'm running a modified calculator project
>>>>> >>>> (setup as an Android project) called calculator-android. I have
>>>>> >>>> imported the Apache Tuscany SCA modules and modified code for
>>>>> Android
>>>>> >>>> into an eclipse workspace. Then I'm running retrotranslator from
>>>>> the
>>>>> >>>> command line as shown below. I'm keeping the target code at java
>>>>> 1.5
>>>>> >>>> but get the annotation related errors when running the calculator-
>>>>> >>>> android as an Android Application. The same thing happens when I
>>>>> try
>>>>> >>>> to convert the code to java 1.4.
>>>>> >>>>
>>>>> >>>> $ java -jar /../retrotranslator-transformer-1.2.6.jar -target 1.5
>>>>> -
>>>>> >>>> stripannot -embed support -reflection safe -classpath /../
>>>>> >>>> retrotranslator-android-1.2.6.jar -srcdir /../workspace/ -verbose
>>>>> >>>>
>>>>> >>>> Any advice you may have will be greatly appreciated. There's more
>>>>> >>>> details on what I'm currently doing in [2] in case you can help.
>>>>> >>>>
>>>>> >>>> Thanks in advance.
>>>>> >>>>
>>>>> >>>> [1]
>>>>> >>>>
>>>>> http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Allow+Google+Android+applications+to+easily+consume+business+services
>>>>> >>>> [2]
>>>>> http://cwiki.apache.org/confluence/display/TUSCANYWIKI/30may2008
>>>>> >>>>
>>>>> >>>> best,
>>>>> >>>> -oscar
>>>>> >>>>
>>>>> >>>> On Apr 3, 5:40 pm, Taras Puchko <[EMAIL PROTECTED]> wrote:
>>>>> >>>> > I've made a mistake in my previous post, the correct command is
>>>>> the
>>>>> >>>> > following:
>>>>> >>>> >
>>>>> >>>> > java -jarretrotranslator-transformer-1.2.6.jar -target 1.5 -
>>>>> >>>> > stripannot -embed support -reflection safe
>>>>> -classpathretrotranslator-
>>>>> >>>> > android-1.2.6.jar -srcjar gdata-media-1.0.jar
>>>>> >>>> >
>>>>> >>>> > To use annotations in your code extract classes that contain or
>>>>> >>>> > manipulate annotations into a separate library, translate it
>>>>> >>>> withRetrotranslatorand add it as a dependency to the main project.
>>>>> >>>> >
>>>>> >>>> > Regards,
>>>>> >>>> > Taras.
>>>>> >>>> >
>>>>> >>>> > On 3 Кві, 09:42, Taras Puchko <[EMAIL PROTECTED]> wrote:
>>>>> >>>> >
>>>>> >>>> > > If your application does not declare or use annotations itself
>>>>> you
>>>>> >>>> > > may
>>>>> >>>> > > translate the dependency before adding it to the Eclipse
>>>>> project:
>>>>> >>>> >
>>>>> >>>> > > java -jarretrotranslator-transformer-1.2.6.jar -target 1.5
>>>>> -embed
>>>>> >>>> > > support -reflection safe -stripannot -srcjar
>>>>> gdata-media-1.0.jar
>>>>> >>>> >
>>>>> >>>> > > Regards,
>>>>> >>>> > > Taras.
>>>>> >>>> >
>>>>> >>>> > > On 28 Бер, 17:18, nwmotogeek <[EMAIL PROTECTED]> wrote:
>>>>> >>>> >
>>>>> >>>> > > > That link describes how to add a target to the build.xml but
>>>>> I
>>>>> >>>> > > > don't
>>>>> >>>> know
>>>>> >>>> > > > how to do that with Eclipse can some one point me to
>>>>> instructions
>>>>> >>>> > > > on
>>>>> >>>> this?
>>>>> >>>> >
>>>>> >>>> > > > Thanks,
>>>>> >>>> > > > -Dave
>>>>> >>>>
>>>>> >>>
>>>>> >>>
>>>>> >>> >>>>> >>>
>>>>> >>>
>>>>> >>
>>>>> >>
>>>>> >> --
>>>>> >> best,
>>>>> >> -oscar
>>>>> >>
>>>>> >> Oscar Castañeda
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> --
>>>>> >> best,
>>>>> >> -oscar
>>>>> >>
>>>>> >> Oscar Castañeda
>>>>> >>
>>>>> >
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> best,
>>>> -oscar
>>>>
>>>> Oscar Castañeda
>>>
>>>
>>>
>>
>>
>> --
>> best,
>> -oscar
>>
>> Oscar Castañeda
>
>
>


-- 
best,
-oscar

Oscar Castañeda

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to