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 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] 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 -~----------~----~----~----~------~----~------~--~---

