Since the system is all started up when you press play or use the gogo command 
this does not look like a start ordering problem. Nor is it a R/C problem 
because all is satisfied.

The path from Gogo must therefore follow a different trajectory. The best way 
to find these things out is to single step both paths and try to find a 
difference. It might also help to remove as much functionality as possible to 
focus on the different paths. I.e. try to remove the weaving to include/exclude 
that as cause.

I assume you run without security?

Kind regards,

        Peter Kriens

> On 5 Dec 2016, at 21:48, Elliot Huntington <elliot.hunting...@gmail.com> 
> wrote:
> 
> @BJ Hargrave,
> 
> Yes, I just tested rearranging the items listed in -runbundles to make sure 
> the ones that should be loaded first are. The problem remains.
> 
> @Raymond Auge,
> 
> I'm having a hard time understanding your response. I think I generally 
> understand what you're saying, but I don't know what to look for as far as 
> what should specifically be in the set of requirements/capabilities for this 
> use case. But I think the essence of your response is that if the 
> requirements and capabilities are not properly configured in the bundles then 
> the bundles wont even resolve properly much less activate properly?
> 
> I'm quite certain that I have properly configured the 
> requirements/capabilities in the media player bundle which depends on the 
> dynamic weaving bundle, otherwise I don't think loading the MP3 file would 
> work properly from the gogo shell, which it does. I just don't understand why 
> it works from the shell but not from the GUI.
> 
> 
> In case it helps, here is the output of listing the installed bundles in the 
> framework. I'm assuming that since the ASM, Util, and Dynamic Weaving bundles 
> are loaded first that the start level configuration is not required (as 
> indicated in BJ's response).
> 
> G! lb
> lb
> START LEVEL 1
>    ID|State      |Level|Name
>     0|Active     |    0|OSGi System Bundle 
> (3.10.100.v20150529-1857)|3.10.100.v20150529-1857
>     1|Active     |    1|ASM all classes with debug info (5.1.0)|5.1.0
>     2|Active     |    1|Apache Aries Util (1.1.3)|1.1.3
>     3|Active     |    1|Apache Aries SPI Fly Dynamic Weaving Bundle 
> (1.0.8)|1.0.8
>     4|Active     |    1|tritonus-share (0.3.7.4)|0.3.7.4
>     5|Active     |    1|JLayer (1.0.1.4)|1.0.1.4
>     6|Active     |    1|MP3SPI (1.9.5.4)|1.9.5.4
>     7|Active     |    1|Apache Felix Configuration Admin Service (1.8.8)|1.8.8
>     8|Active     |    1|Apache Felix Log Service (1.0.1)|1.0.1
>     9|Active     |    1|Apache Felix Declarative Services (2.0.2)|2.0.2
>    10|Active     |    1|Meta Type 
> (1.4.100.v20150408-1437)|1.4.100.v20150408-1437
>    11|Active     |    1|org.osgi:org.osgi.service.metatype 
> (1.3.0.201505202024)|1.3.0.201505202024
>    12|Active     |    1|Apache Felix Gogo Command (0.16.0)|0.16.0
>    13|Active     |    1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
>    14|Active     |    1|OSGi enRoute Gogo Shell 
> (2.0.0.201610141744)|2.0.0.201610141744
>    15|Active     |    1|com.github.axiopisty.plarpebu.mediaplayer.provider 
> (1.0.0.201612052005)|1.0.0.201612052005
>    16|Active     |    
> 1|com.github.axiopisty.plarpebu.javafx.launcher.provider 
> (1.0.0.201611291642)|1.0.0.201611291642
>    17|Active     |    1|com.github.axiopisty.plarpebu.application 
> (1.0.0.201612052007)|1.0.0.201612052007
> 
> 
> The headers for the media player provider bundle are:
> 
> G! headers 15
> headers 15
> 
> com.github.axiopisty.plarpebu.mediaplayer.provider (15)
> -------------------------------------------------------
> Manifest-Version = 1.0
> Bnd-LastModified = 1480968335538
> Bundle-Description = MP3 MediaPlayer
> Bundle-ManifestVersion = 2
> Bundle-Name = com.github.axiopisty.plarpebu.mediaplayer.provider
> Bundle-SymbolicName = com.github.axiopisty.plarpebu.mediaplayer.provider
> Bundle-Version = 1.0.0.201612052005
> Created-By = 1.8.0_60 (Oracle Corporation)
> Export-Package = com.github.axiopisty.plarpebu.mediaplayer.api;version="1.0.0"
> Import-Package = 
> com.github.axiopisty.plarpebu.mediaplayer.api;version="[1.0,1.1)",javax.sound.sampled
> Private-Package = 
> com.github.axiopisty.plarpebu.mediaplayer.mp3.provider,com.github.axiopisty.plarpebu.mediaplayer.mp3.provider.internal
> Provide-Capability = 
> osgi.service;objectClass:List<String>="com.github.axiopisty.plarpebu.mediaplayer.api.MediaPlayer"
> Require-Capability = osgi.ee <http://osgi.ee/>;filter:="(&(osgi.ee 
> <http://osgi.ee/>=JavaSE)(version=1.8))"
> Service-Component = OSGI-INF/com.github.axiopisty.plarpebu.mediaplayer.mp3.xml
> SPI-Consumer = javax.sound.sampled.AudioSystem#getAudioInputStream
> Tool = Bnd-3.3.0.201609221906
> 
> 
> With the application running, the GUI loads properly. But if you click on the 
> Load button and then select an MP3 file the application reports the following:
> 
> load: AG1001-01 - Cat Stevens - Wild World.mp3
> java.lang.IllegalArgumentException: No line matching interface SourceDataLine 
> supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, 
> little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:479)
>     at 
> com.github.axiopisty.plarpebu.mediaplayer.mp3.provider.internal.MP3Player.<init>(MP3Player.java:45)
>     at 
> com.github.axiopisty.plarpebu.mediaplayer.mp3.provider.KaraokePlayer.initialize(KaraokePlayer.java:52)
>     at 
> com.github.axiopisty.plarpebu.mediaplayer.mp3.provider.KaraokePlayer.load(KaraokePlayer.java:42)
>     at 
> com.github.axiopisty.plarpebu.application.Plarpebu.lambda$3(Plarpebu.java:77)
>     at 
> com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
>     at 
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
>     at 
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
>     at 
> com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
>     at 
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
>     at 
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
>     at 
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
>     at 
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
>     at 
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
>     at 
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
>     at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
>     at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
>     at javafx.event.Event.fireEvent(Event.java:198)
>     at javafx.scene.Node.fireEvent(Node.java:8411)
>     at javafx.scene.control.Button.fire(Button.java:185)
>     at 
> com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
>     at 
> com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
>     at 
> com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
>     at 
> com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
>     at 
> com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
>     at 
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
>     at 
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
>     at 
> com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
>     at 
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
>     at 
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
>     at 
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
>     at 
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
>     at 
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
>     at 
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
>     at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
>     at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
>     at javafx.event.Event.fireEvent(Event.java:198)
>     at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
>     at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
>     at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
>     at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
>     at 
> com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352)
>     at 
> com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at 
> com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$355(GlassViewEventHandler.java:388)
>     at 
> com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
>     at 
> com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387)
>     at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
>     at com.sun.glass.ui.View.notifyMouse(View.java:937)
>     at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
>     at 
> com.sun.glass.ui.gtk.GtkApplication.lambda$null$50(GtkApplication.java:139)
>     at java.lang.Thread.run(Thread.java:745)
> 
> 
> However, if you issue the following command at the gogo shell you get:
> 
> G! mp3:load "/home/ehuntington/projects/research/Tracks/AG1001/AG1001-01 - 
> Cat Stevens - Wild World.mp3"
> mp3:load "/home/ehuntington/projects/research/Tracks/AG1001/AG1001-01 - Cat 
> Stevens - Wild World.mp3"
> MP3Player run entered.
> load: AG1001-01 - Cat Stevens - Wild World.mp3
> state = PlayerState.INITIALIZED
> 
> After doing this you can then either click the play button in the GUI or use 
> the gogo command "mp3:play" and the song plays as expected.
> 
> What am I missing? I just don't understand why loading the mp3 file works as 
> expected when using the gogo commands but not from within the gui.
> 
> 
> 
> 
> 
> On Mon, Dec 5, 2016 at 12:19 PM, Raymond Auge <raymond.a...@liferay.com 
> <mailto:raymond.a...@liferay.com>> wrote:
> Properly configuring the SPI-Fly integration should result in a set of 
> requirement and capabilities on the target bundles causing them to have a 
> resolution time requirement which should force the weaving to affect them in 
> the correct order.
> 
> For instance, if you have API bundle X that requires bundle Z providing an 
> impl via service loader:
> 
> - Bundle Z(provider) should have 
>     a) a requirement on a service mediator registrar
>     b) a capability for the service mediator provider for the API in question
>     c) after weaving (which must occur due to a), have published Z's impl 
> into the service registry
> 
> - Bundle X(api) should have
>     a) a requirement for the service mediator processor
>     b) a requirement on service mediator provider for the API in question
>     c) after weaving (which must occur due to a), have OSGi service registry 
> code for obtaining the impl
> 
> when properly done neither of X or Y could reach "ACTIVE" or even "RESOLVE" 
> state unless the service mediator (Spi-Fly) has done it's job of weaving.
> 
> See the notes at http://aries.apache.org/modules/spi-fly.html 
> <http://aries.apache.org/modules/spi-fly.html>
> 
> Sincerely,
> - Ray
> 
> 
> On Mon, Dec 5, 2016 at 1:56 PM, BJ Hargrave <hargr...@us.ibm.com 
> <mailto:hargr...@us.ibm.com>> wrote:
> I am not aware of any support in -runbundles to set start levels for bundle. 
> But the bnd launcher should start the bundle in the order they are specified 
> on the -runbundles instruction. Did you try putting those bundles first that 
> need to be started first?
>  
> --
> 
> BJ Hargrave
> Senior Technical Staff Member, IBM // office: +1 386 848 1781 
> <tel:(386)%20848-1781>
> OSGi Fellow and CTO of the OSGi Alliance // mobile: +1 386 848 3788 
> <tel:(386)%20848-3788>
> hargr...@us.ibm.com <mailto:hargr...@us.ibm.com>
>  
>  
> ----- Original message -----
> From: Elliot Huntington <elliot.hunting...@gmail.com 
> <mailto:elliot.hunting...@gmail.com>>
> Sent by: osgi-dev-boun...@mail.osgi.org 
> <mailto:osgi-dev-boun...@mail.osgi.org>
> To: OSGi Developer Mail List <osgi-dev@mail.osgi.org 
> <mailto:osgi-dev@mail.osgi.org>>
> Cc:
> Subject: [osgi-dev] Strange issue with enRoute and Aries SPI Fly.
> Date: Mon, Dec 5, 2016 1:35 PM
>  
> The motivation for this thread is that I am experimenting with an OSGi 
> enRoute project that uses the Apache Aries SPI-Fly dynamic weaving libraries 
> to play an MP3 file. The example project is on github at: 
> https://github.com/axiopisty/com.github.axiopisty.plarpebu 
> <https://github.com/axiopisty/com.github.axiopisty.plarpebu>. This project 
> has 5 enRoute modules:
> JavaFX API
> JavaFX API Provider
> Media Player API
> Media Player API Provider
> Application
> What I have noticed is that when I use 'osgi.enroute.debug.api' I can use the 
> debug commands in the gogo shell to successfully load, play, pause, and stop 
> the media player. The application will successfully play an MP3 file. 
> However, when using the GUI to 'load' the MP3 file an exception occurs that 
> indicates something is not working right with the SPI Fly dynamic weaving 
> integration. I have not been able to figure out why the 'load' operation 
> works successfully when using the gogo shell, but does not work when called 
> from the GUI. I'm wondering if it might have something to do with the bundle 
> start levels because according to the SPI Fly documentation, "any OSGi Bundle 
> that uses the OSGi 4.3 WeavingHooks, the weaver bundle 
> (org.apache.aries.spifly.dynamic.bundle) needs to be active before any 
> bundles that need to be dynamically woven. OSGi start levels can provide a 
> mechanism to control this."
> 
> My suspicion is that because the JavaFX provider is a DS component with scope 
> SINGLETON and immediate = true, that this bundle is activated before the 
> dynamic weaving bundle in the runtime, which is probably causing the problem 
> described.
> 
> So my question is, when using bnd, is there some directive or syntax that can 
> be used with the -runbundles directive that indicates the bundle start level?
>  
> I would greatly appreciate your help figuring out why the media player 
> service I created in this example works successfully from the gogo shell, but 
> not from the gui, all within the same runtime application.
>  
> Sincerely,
> Elliot
>  
>  
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
>  
> 
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
> 
> 
> 
> -- 
> Raymond Augé <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
> Senior Software Architect Liferay, Inc. <http://www.liferay.com/> (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org/> (@OSGiAlliance)
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to