We definitely do see CompConfigDTOs for instances created from a
ComponentFactory, I tested this explicitly at the request of Ray.

I'm not sure if this is due to an R7 spec change or just a change in the
Felix SCR implementation.

Neil

On Thu, Jan 11, 2018 at 7:07 AM, David Jencks <[email protected]>
wrote:

> As I recall (possibly wrongly) there are no ComponentConfigurationDTOs for
> instances created from a factory component, so a command based on DTOs
> would have had difficulty displaying info about them. Has this changed in
> the r7 spec, or, perhaps, is my recollection wrong?
>
> 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)
>

Reply via email to