It looks to me as if your patch results in there no longer being an ScrInfo service registered. The people using it might possibly not appreciate its removal. I think you should remove the interface and change the version appropriately to make clear what is going on, or else provide the service.
I was never able to figure out how to get the Gogo annotations to work if Gogo was loaded after ds. Have you solved this problem? As I recall the commands were available in Gogo but the help about them was not. Thanks David Jencks Sent from my iPhone > On Jan 10, 2018, at 5:47 AM, Raymond Auge <[email protected]> wrote: > >> On Wed, Jan 10, 2018 at 7:50 AM, Neil Bartlett <[email protected]> wrote: >> >> I don't have much experience with Component Factories. I can try it out... >> if you have a sample bundle that I can test against that would be helpful. >> > > Ok, I can put something simple together. > > I know they are not much used, but since we made an update for these in the > latest DS spec w.r.t. factory configuration defaults I think it starts to > make more sense to include them in any reporting also. > > - Ray > > >> >> Neil >> >> On Wed, Jan 10, 2018 at 12:25 PM, Raymond Auge <[email protected]> >> wrote: >> >>> +1 >>> >>> I've been meaning for a long time to improve the output. Yours looks very >>> good. >>> >>> Does it support component factory instances? I don't think the original >> one >>> does. >>> >>> - Ray >>> >>>> On Wed, Jan 10, 2018 at 4:40 AM, njbartlett <[email protected]> wrote: >>>> >>>> GitHub user njbartlett opened a pull request: >>>> >>>> https://github.com/apache/felix/pull/130 >>>> >>>> New SCR commands >>>> >>>> New SCR Commands >>>> ================ >>>> >>>> This is a reimplementation of the `scr:list` and `scr:info` >> commands, >>>> presented in a more compact and accessible way. The proposal is to >>>> implement these commands on the R7 branch only, to be included in SCR >>> 2.1.x. >>>> >>>> Changes include: >>>> >>>> - Support for DS 1.4 failed activation state and failure message. >>>> - Provide information on any service registered by the component, >>>> including service ID and using bundles. >>>> - The `scr:list` and `scr:info` commands simply return DTO objects >> to >>>> the Gogo Shell. These objects are then formatted by an instance of the >>>> `Converter` service. This is more in keeping with the philosophy of >> Gogo, >>>> since it allows others to write commands that produce DTO objects >> without >>>> having to provide their own formatting. >>>> - Support for the legacy Felix Shell is dropped, only Gogo is >>>> supported. >>>> >>>> Example Output >>>> -------------- >>>> >>>> The following is an example of the output of the new commands: >>>> >>>> >>>> g! scr:list >>>> com.effectiveosgi.rt.aws.s3 in bundle [1] >>>> (com.effectiveosgi.rt.aws:2.0.0.201801100857) enabled, 0 instances. >>>> com.effectiveosgi.rt.aws.impl.S3ObjectConverter in bundle [1] >>>> (com.effectiveosgi.rt.aws:2.0.0.201801100857) enabled, 1 instance. >>>> Id: 0, State:ACTIVE >>>> com.effectiveosgi.ExampleComponent in bundle [6] >>>> (example:1.0.0.201801100858) enabled, 3 instances. >>>> Id: 1, State:ACTIVE, PID(s): [com.effectiveosgi. >>>> ExampleComponent~three] >>>> Id: 2, State:ACTIVE, PID(s): [com.effectiveosgi. >>>> ExampleComponent~two] >>>> Id: 3, State:ACTIVE, PID(s): [com.effectiveosgi. >>>> ExampleComponent~one] >>>> com.effectiveosgi.SampleRunnable in bundle [6] >>>> (example:1.0.0.201801100858) enabled, 1 instance. >>>> Id: 4, State:ACTIVE >>>> >>>> g! scr:info 4 >>>> Component Description: com.effectiveosgi.SampleRunnable >>>> ======================================================= >>>> Class: com.effectiveosgi.SampleRunnable >>>> Bundle: 6 (example:1.0.0.201801100858) >>>> Enabled: true >>>> Immediate: false >>>> Services: [java.lang.Runnable] >>>> Scope: prototype >>>> Config PID(s): [com.effectiveosgi.SampleRunnable], Policy: >>>> optional >>>> Base Props: (0 entries) >>>> >>>> Component Configuration Id: 4 >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>> State: ACTIVE >>>> Service Id: 52 [java.lang.Runnable] >>>> Used by bundle [6] (example:1.0.0.201801100858) >>>> Config Props: (2 entries) >>>> component.id<Long> = 4 >>>> component.name<String> = com.effectiveosgi.SampleRunnable >>>> References: (total 0) >>>> >>>> g! scr:info 3 >>>> Component Description: com.effectiveosgi.ExampleComponent >>>> ========================================================= >>>> Class: com.effectiveosgi.ExampleComponent >>>> Bundle: 6 (example:1.0.0.201801100858) >>>> Enabled: true >>>> Immediate: true >>>> Services: <<none>> >>>> Config PID(s): [com.effectiveosgi.ExampleComponent], Policy: >>>> optional >>>> Base Props: (0 entries) >>>> >>>> Component Configuration Id: 3 >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>> State: ACTIVE >>>> Config Props: (6 entries) >>>> _com.effectiveosgi.rt.config.filePath<String> = >>>> /Users/neil.bartlett/Projects/eosgi-runtime/_assembly/load/ >>>> http-config.yaml >>>> component.id<Long> = 3 >>>> component.name<String> = com.effectiveosgi.ExampleComponent >>>> port<Integer> = 8001 >>>> service.factoryPid<String> = com.effectiveosgi. >> ExampleComponent >>>> service.pid<String> = com.effectiveosgi.ExampleComponent~one >>>> References: (total 1) >>>> runnable: java.lang.Runnable SATISFIED >>>> 1..1 static target=(*) scope=prototype_required >>>> Bound to [52] from bundle [6] example:1.0.0.201801100858 >>>> >>>> For reference, here is the equivalent output from the previous >>> command >>>> implementation: >>>> >>>> g! scr:list >>>> BundleId Component Name Default State >>>> Component Id State PIDs (Factory PID) >>>> [ 1] com.effectiveosgi.rt.aws.impl.S3ObjectConverter >>> enabled >>>> [ 0] [active ] >>>> [ 1] com.effectiveosgi.rt.aws.s3 enabled >>>> [ 7] com.effectiveosgi.ExampleComponent enabled >>>> [ 1] [active ] com.effectiveosgi. >>> ExampleComponent~three >>>> (com.effectiveosgi.ExampleComponent ) >>>> [ 2] [active ] com.effectiveosgi. >> ExampleComponent~two >>>> (com.effectiveosgi.ExampleComponent ) >>>> [ 3] [active ] com.effectiveosgi. >> ExampleComponent~one >>>> (com.effectiveosgi.ExampleComponent ) >>>> [ 7] com.effectiveosgi.SampleRunnable enabled >>>> [ 4] [active ] >>>> g! scr:info 4 >>>> *** Bundle: example (7) >>>> Component Description: >>>> Name: com.effectiveosgi.SampleRunnable >>>> Implementation Class: com.effectiveosgi.SampleRunnable >>>> Default State: enabled >>>> Activation: delayed >>>> Configuration Policy: optional >>>> Activate Method: activate >>>> Deactivate Method: deactivate >>>> Modified Method: - >>>> Configuration Pid: [com.effectiveosgi.SampleRunnable] >>>> Services: >>>> java.lang.Runnable >>>> Service Scope: prototype >>>> Component Description Properties: >>>> Component Configuration: >>>> ComponentId: 4 >>>> State: active >>>> Component Configuration Properties: >>>> component.id = 4 >>>> component.name = com.effectiveosgi.SampleRunnable >>>> >>>> g! scr:info 3 >>>> *** Bundle: example (7) >>>> Component Description: >>>> Name: com.effectiveosgi.ExampleComponent >>>> Implementation Class: com.effectiveosgi.ExampleComponent >>>> Default State: enabled >>>> Activation: immediate >>>> Configuration Policy: optional >>>> Activate Method: activate >>>> Deactivate Method: deactivate >>>> Modified Method: - >>>> Configuration Pid: [com.effectiveosgi.ExampleComponent] >>>> Reference: runnable >>>> Interface Name: java.lang.Runnable >>>> Cardinality: 1..1 >>>> Policy: static >>>> Policy option: reluctant >>>> Reference Scope: prototype_required >>>> Component Description Properties: >>>> Component Configuration: >>>> ComponentId: 3 >>>> State: active >>>> SatisfiedReference: runnable >>>> Target: null >>>> Bound to: 53 >>>> Reference Properties: >>>> component.id = 4 >>>> component.name = com.effectiveosgi.SampleRunnable >>>> objectClass = [java.lang.Runnable] >>>> service.bundleid = 7 >>>> service.id = 53 >>>> service.scope = bundle >>>> Component Configuration Properties: >>>> _com.effectiveosgi.rt.config.filePath = >>>> /Users/neil.bartlett/Projects/eosgi-runtime/_assembly/load/ >>>> http-config.yaml >>>> component.id = 3 >>>> component.name = com.effectiveosgi.ExampleComponent >>>> port = 8001 >>>> service.factoryPid = com.effectiveosgi. >> ExampleComponent >>>> service.pid = com.effectiveosgi.ExampleComponent~one >>>> >>>> >>>> >>>> You can merge this pull request into a Git repository by running: >>>> >>>> $ git pull https://github.com/njbartlett/felix scrcommands >>>> >>>> Alternatively you can review and apply these changes as the patch at: >>>> >>>> https://github.com/apache/felix/pull/130.patch >>>> >>>> To close this pull request, make a commit to your master/trunk branch >>>> with (at least) the following in the commit message: >>>> >>>> This closes #130 >>>> >>>> ---- >>>> commit 7a6f6d08008b54c6f3cd272ac3c0540f1b95d22c >>>> Author: Neil Bartlett <njbartlett@...> >>>> Date: 2018-01-10T09:25:00Z >>>> >>>> New SCR component commands >>>> >>>> ---- >>>> >>>> >>>> --- >>>> >>> >>> >>> >>> -- >>> *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) >>> >> > > > > -- > *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)
