You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@aries.apache.org by David Bosschaert <da...@gmail.com> on 2011/12/16 17:20:11 UTC

Re: problem in using spi fly (strange exceptions...)

Just to follow up on this on the list.
Oliver and I have been working on this over the past while. His
use-case uncovered a number of new scenarios and issues (e.g. [1])
that I have since fixed on spi-fly trunk.

I've also improved the documentation:
http://aries.apache.org/modusles/spi-fly.html

Best regards,

David

[1] http://mail-archives.apache.org/mod_mbox/aries-dev/201112.mbox/%3CCAMit8SovverVzq2xZwH7Anc_YRrK4EMxUSPVkKx1h_dSszFebg%40mail.gmail.com%3E

On 13 November 2011 08:34, Oliver Zemann <ol...@googlemail.com> wrote:
> Hi David,
>
> thanks for your reply.
> I created the issue https://issues.apache.org/jira/browse/ARIES-780
> Unfortunatly, as i noted in the issue, its not working
> Maybe it is just a little beginners mistake that i have overseen
> something or so...
> So i made it as Question with minor priority and not as bug.
>
> Regards,
>
> Oli
>
> Am 12.11.2011 22:12, schrieb David Bosschaert:
>> Hi Oliver,
>>
>> This is good timing as I was just going to spend some time on spi-fly
>> again in the near term.
>> So those lines of text that you're seeing is just debug output. You
>> should be able to ignore that safely.
>> However, I understand that the functionality isn't actually working
>> for you. No there isn't a SPI-Consumer: javax.sound.* - type wildcard,
>> maybe we should add something like that, but SPI-Consumer: * should
>> work as well, right?
>>
>> In any case I think you're experiencing an error and I would like to
>> understand better what the problem is. Could you maybe create a JIRA
>> issue for this (https://issues.apache.org/jira/browse/ARIES) and
>> attach the things needed to be able to reproduce it to that? Then I
>> can try to look deeper into the issue.
>>
>> Cheers,
>>
>> David
>>
>> On 12 November 2011 13:57, Oliver Zemann <ol...@googlemail.com> wrote:
>>> hi,
>>>
>>> i'm trying to build mp3spi (with tritounus-mp3) to work in an osgi
>>> environment.
>>> It provides some META-INF/services classes (AudioInputStream etc.) which
>>> should be made available to my class PlayerEngine so that i can playback
>>> mp3's.
>>> I added the following line to my PlayerEngine's Manifest:
>>> SPI-Consumer: *
>>>
>>> and the provider (i wrapped mp3spi, tritounus etc. together) got also a
>>> line in the Manifest:
>>> SPI-Provider: *
>>>
>>> i can load the wrapped bundle fine, so i think this should work.
>>> The problem is when i try to manipulate the PlayerEngine with the static
>>> weaving tool i get:
>>>
>>> C:\Users\oli\Desktop> java -jar ..\Downloads\spifly-static-tool.jar
>>> .\equinox\SoundBox-PlayerEngine-1.0-SNAPSHOT.jar
>>> [SPI Fly Static Tool] Processing:
>>> .\equinox\SoundBox-PlayerEngine-1.0-SNAPSHOT.jar
>>> @@@ 1: <init>#()V#null~null
>>> ### 183: java/lang/Object#<init>#()V
>>> @@@ 1:
>>> start#(Lorg/osgi/framework/BundleContext;)V#null~[java/lang/Exception]
>>> ### 183:
>>> org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#<init>#(Lorg/osgi/framework/BundleContext;)V
>>> ### 182:
>>> org/dyndns/soundi/portals/interfaces/CommunicationAction#toString#()Ljava/lang/String;
>>> ### 182:
>>> org/dyndns/soundi/portals/interfaces/CommunicationAction#toString#()Ljava/lang/String;
>>> ### 183: java/util/Hashtable#<init>#()V
>>> ### 182:
>>> java/util/Dictionary#put#(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
>>> ### 182: java/lang/Class#getName#()Ljava/lang/String;
>>> ### 182: java/lang/Class#getName#()Ljava/lang/String;
>>> ### 185:
>>> org/osgi/framework/BundleContext#registerService#([Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)L
>>> org/osgi/framework/ServiceRegistration;
>>> ### 184:
>>> org/dyndns/soundi/utils/Util#sendMessage#(Lorg/dyndns/soundi/utils/Util$Component;Ljava/lang/String;)V
>>> @@@ 1: stop#(Lorg/osgi/framework/BundleContext;)V#null~[java/lang/Exception]
>>> @@@ 0: <init>#(Lorg/osgi/framework/BundleContext;)V#null~null
>>> ### 183: java/lang/Object#<init>#()V
>>> @@@ 1:
>>> play#(Ljava/io/InputStream;Lorg/dyndns/soundi/portals/interfaces/Song;)V#null~null
>>> ### 184:
>>> javax/sound/sampled/AudioSystem#getAudioFileTypes#()[Ljavax/sound/sampled/AudioFileFormat$Type;
>>> ### 182:
>>> javax/sound/sampled/AudioFileFormat$Type#getExtension#()Ljava/lang/String;
>>> ### 182: java/io/PrintStream#println#(Ljava/lang/String;)V
>>> ### 184:
>>> javax/sound/sampled/AudioSystem#getAudioInputStream#(Ljava/io/InputStream;)Ljavax/sound/sampled/AudioInputStrea
>>> m;
>>> ### 182: java/lang/Class#getName#()Ljava/lang/String;
>>> ### 184:
>>> java/util/logging/Logger#getLogger#(Ljava/lang/String;)Ljava/util/logging/Logger;
>>> ### 182:
>>> java/util/logging/Logger#log#(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
>>> ### 182: java/lang/Class#getName#()Ljava/lang/String;
>>> ### 184:
>>> java/util/logging/Logger#getLogger#(Ljava/lang/String;)Ljava/util/logging/Logger;
>>> ### 182:
>>> java/util/logging/Logger#log#(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
>>> ### 182:
>>> javax/sound/sampled/AudioInputStream#getFormat#()Ljavax/sound/sampled/AudioFormat;
>>> ### 182: javax/sound/sampled/AudioFormat#getSampleRate#()F
>>> ### 182: javax/sound/sampled/AudioFormat#getChannels#()I
>>> ### 182: javax/sound/sampled/AudioFormat#getChannels#()I
>>> ### 182: javax/sound/sampled/AudioFormat#getSampleRate#()F
>>> ### 183:
>>> javax/sound/sampled/AudioFormat#<init>#(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
>>> ### 184:
>>> javax/sound/sampled/AudioSystem#getAudioInputStream#(Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/Audi
>>> oInputStream;)Ljavax/sound/sampled/AudioInputStream;
>>> ### 183:
>>> org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#rawplay#(Ljavax/sound/sampled/AudioFormat;Ljavax/sou
>>> nd/sampled/AudioInputStream;Lorg/dyndns/soundi/portals/interfaces/Song;)V
>>> @@@ 1: pause#()V#null~null
>>> @@@ 1: stop#()V#null~null
>>> @@@ 1: handleEvent#(Lorg/osgi/service/event/Event;)V#null~null
>>> @@@ 2:
>>> rawplay#(Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/AudioInputStream;Lorg/dyndns/soundi/portals/interf
>>> aces/Song;)V#null~null
>>> ### 183:
>>> org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#getLine#(Ljavax/sound/sampled/AudioFormat;)Ljavax/so
>>> und/sampled/SourceDataLine;
>>> ### 185: javax/sound/sampled/SourceDataLine#start#()V
>>> ### 185: javazoom/spi/PropertiesContainer#properties#()Ljava/util/Map;
>>> ### 185: java/util/Map#get#(Ljava/lang/Object;)Ljava/lang/Object;
>>> ### 182: java/lang/Long#longValue#()J
>>> ### 185: java/util/Map#get#(Ljava/lang/Object;)Ljava/lang/Object;
>>> ### 182: java/lang/Long#longValue#()J
>>> ### 182: javax/sound/sampled/AudioInputStream#read#([BII)I
>>> ### 185: javax/sound/sampled/SourceDataLine#write#([BII)I
>>> ### 185: javax/sound/sampled/SourceDataLine#drain#()V
>>> ### 185: javax/sound/sampled/SourceDataLine#stop#()V
>>> ### 185: javax/sound/sampled/SourceDataLine#close#()V
>>> ### 182: java/lang/Exception#printStackTrace#()V
>>> @@@ 2:
>>> getLine#(Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/SourceDataLine;#null~[javax/sound/sampled/LineUna
>>> vailableException]
>>> ### 183:
>>> javax/sound/sampled/DataLine$Info#<init>#(Ljava/lang/Class;Ljavax/sound/sampled/AudioFormat;)V
>>> ### 184:
>>> javax/sound/sampled/AudioSystem#getLine#(Ljavax/sound/sampled/Line$Info;)Ljavax/sound/sampled/Line;
>>> ### 185:
>>> javax/sound/sampled/SourceDataLine#open#(Ljavax/sound/sampled/AudioFormat;)V
>>>
>>> thats also what i get when i try to use dynamic weaving (which would be
>>> much nicer)
>>>
>>> i thought maybe i just  need to add a special line to the SPI-Consumer:
>>> header like:
>>> SPI-Consumer: javax.sound.*
>>> but thats not working, it then complains that it requires a class and a
>>> method, but i have no idea how to declare this as there is no documentation
>>>
>>> thanks in advance.
>>>
>