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

Reply via email to