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.
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) >
