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
-~----------~----~----~----~------~----~------~--~---

Reply via email to