You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by njbartlett <gi...@git.apache.org> on 2018/01/10 09:40:54 UTC
[GitHub] felix pull request #130: New SCR commands
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 <nj...@...>
Date: 2018-01-10T09:25:00Z
New SCR component commands
----
---
[GitHub] felix pull request #130: New SCR commands
Posted by njbartlett <gi...@git.apache.org>.
Github user njbartlett closed the pull request at:
https://github.com/apache/felix/pull/130
---
Re: [GitHub] felix pull request #130: New SCR commands
Posted by Neil Bartlett <nj...@gmail.com>.
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 <da...@gmail.com>
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 <ra...@liferay.com>
> wrote:
> >
> >> On Wed, Jan 10, 2018 at 7:50 AM, Neil Bartlett <nj...@gmail.com>
> 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 <
> raymond.auge@liferay.com>
> >> 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 <gi...@git.apache.org>
> 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 <nj...@...>
> >>>> 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)
>
Re: [GitHub] felix pull request #130: New SCR commands
Posted by David Jencks <da...@gmail.com>.
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 <ra...@liferay.com> wrote:
>
>> On Wed, Jan 10, 2018 at 7:50 AM, Neil Bartlett <nj...@gmail.com> 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 <ra...@liferay.com>
>> 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 <gi...@git.apache.org> 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 <nj...@...>
>>>> 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)
Re: [GitHub] felix pull request #130: New SCR commands
Posted by Neil Bartlett <nj...@gmail.com>.
On Thu, Jan 11, 2018 at 6:43 AM, David Jencks <da...@gmail.com>
wrote:
> 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.
>
Thanks for your feedback David. I agree I probably need to restore the
ScrInfo service implementation, as a wrapper around the new command object,
since I don't want this change to be breaking.
>
> 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.
>
That's not something I have tested... or was aware needed to be tested ;-)
I will take a look. If it remains an issue then I suspect the fix needs to
be in Gogo rather than in the command class.
Neil
>
> Thanks
> David Jencks
>
> Sent from my iPhone
>
> > On Jan 10, 2018, at 5:47 AM, Raymond Auge <ra...@liferay.com>
> wrote:
> >
> >> On Wed, Jan 10, 2018 at 7:50 AM, Neil Bartlett <nj...@gmail.com>
> 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 <
> raymond.auge@liferay.com>
> >> 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 <gi...@git.apache.org>
> 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 <nj...@...>
> >>>> 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)
>
Re: [GitHub] felix pull request #130: New SCR commands
Posted by David Jencks <da...@gmail.com>.
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 <ra...@liferay.com> wrote:
>
>> On Wed, Jan 10, 2018 at 7:50 AM, Neil Bartlett <nj...@gmail.com> 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 <ra...@liferay.com>
>> 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 <gi...@git.apache.org> 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 <nj...@...>
>>>> 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)
Re: [GitHub] felix pull request #130: New SCR commands
Posted by Raymond Auge <ra...@liferay.com>.
On Wed, Jan 10, 2018 at 7:50 AM, Neil Bartlett <nj...@gmail.com> 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 <ra...@liferay.com>
> 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 <gi...@git.apache.org> 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 <nj...@...>
> > > 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)
Re: [GitHub] felix pull request #130: New SCR commands
Posted by Neil Bartlett <nj...@gmail.com>.
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 <ra...@liferay.com>
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 <gi...@git.apache.org> 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 <nj...@...>
> > 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)
>
Re: [GitHub] felix pull request #130: New SCR commands
Posted by Raymond Auge <ra...@liferay.com>.
+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 <gi...@git.apache.org> 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 <nj...@...>
> 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)