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 <[email protected]> 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 <[email protected]> >> 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. >>> >
