[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [virgo-dev] Building a custom artifact deployer
|
Hi Peter
Yes, please raise a bug. We should either make AbstractInstallArtifact usable, possibly by documenting it better, or enable its use to be optional.
Please note that I am on vacation for 4 out of the next 5 weeks, so it may take a while for me to get around to the bug. OTOH someone else may like to have a go and produce a patch. ;-)
Regards,
Glyn
On 23 Jul 2010, at 09:45, Peter Gardfjäll wrote:
> Thanks Glyn,
>
> I've started experimenting with a custom deployer and I've just bumped
> into a stumbling block.
> It appears to me that an InstallArtifact is required to inherit from
> AbstractInstallArtifact, at least judging by the exception thrown
> shortly after my InstallArtifactTreeFactory has produced an
> InstallArtifact (see stacktrace below).
> I have only had a brief look at the AbstractInstallArtifact class and
> seems to contain lots of logic. I'm not sure I would be comfortable
> just extending it.
> I'm getting a feeling that some code (VisitationStage?) is making too
> many assumptions about the InstallArtifacts it operates on.
> Should a bug be raised?
>
> java.lang.ClassCastException:
> org.eclipse.virgo.zipdeployer.internal.ZipInstallArtifact cannot be
> cast to org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact
> at org.eclipse.virgo.kernel.deployer.core.internal.Plumber$1.operate(Plumber.java:99)
> at org.eclipse.virgo.kernel.install.pipeline.stage.visit.internal.VisitationStage.doProcessNode(VisitationStage.java:51)
> at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipelineStage.doProcessTree(AbstractPipelineStage.java:68)
> at org.eclipse.virgo.kernel.install.pipeline.stage.visit.internal.VisitationStage.doProcessTree(VisitationStage.java:58)
> at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipelineStage.process(AbstractPipelineStage.java:41)
> at org.eclipse.virgo.kernel.install.pipeline.internal.StandardPipeline.doProcessTree(StandardPipeline.java:62)
> at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipelineStage.process(AbstractPipelineStage.java:41)
> at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApplicationDeployer.driveInstallPipeline(PipelinedApplicationDeployer.java:268)
> at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApplicationDeployer.doInstall(PipelinedApplicationDeployer.java:151)
> at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApplicationDeployer.install(PipelinedApplicationDeployer.java:123)
> at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApplicationDeployer.deploy(PipelinedApplicationDeployer.java:187)
> at org.eclipse.virgo.kernel.deployer.hot.HotDeploymentFileSystemListener.deploy(HotDeploymentFileSystemListener.java:174)
> at org.eclipse.virgo.kernel.deployer.hot.HotDeploymentFileSystemListener.onChange(HotDeploymentFileSystemListener.java:78)
> at org.eclipse.virgo.util.io.FileSystemChecker.notifyListeners(FileSystemChecker.java:245)
> at org.eclipse.virgo.util.io.FileSystemChecker.check(FileSystemChecker.java:166)
> at org.eclipse.virgo.kernel.deployer.hot.WatchTask.run(WatchTask.java:58)
> at java.lang.Thread.run(Thread.java:619)
>
> best regards, Peter
>
> On Tue, Jul 20, 2010 at 11:24 AM, Glyn Normington
> <gnormington@xxxxxxxxxx> wrote:
>> Hi Peter
>>
>> Ok, thanks. I've raised:
>>
>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=320368
>>
>> to promote ArtifactStorage to an exported package.
>>
>> Glyn
>> On 20 Jul 2010, at 09:52, Peter Gardfjäll wrote:
>>
>>> Hi Glyn,
>>>
>>> I guess I could make an attempt to write a sample custom deployer. I
>>> don't have a toy example for Virgo yet.
>>> What I have written, as part of another project, is code for
>>> atomically deploying/starting/undeploying zip files containing bundle
>>> jars (a "poor man's PAR" without scoping, pulling in dependencies,
>>> etc).
>>> I could try to adapt that code to the Virgo deployment interfaces.
>>> I am currently on vacation so I can't give you a time frame yet.
>>>
>>> The first step is to make sure all classes/interfaces that are to be
>>> exposed in the public API are promoted to exported packages.
>>> I'm not sure if ArtifactStorage is the only missing link here, but a
>>> start would be to promote it and notify me when its done. Then I could
>>> have a new go at it. When I have some working code I'll put it on
>>> github.
>>>
>>> best regards, Peter
>>>
>>>
>>> On Fri, Jul 9, 2010 at 5:58 PM, Glyn Normington <gnormington@xxxxxxxxxx> wrote:
>>>> Hi Peter
>>>>
>>>> Yes, InstallArtifactTreeFactory obeys the whiteboard pattern and the deployer will pick up any that are registered.
>>>>
>>>> Your right that the ArtifactStorage interface needs promoting to an exported package to be usable by 3rd parties.
>>>>
>>>> It would be good to collaborate on a toy example and then make that available as a Virgo sample. Compare [1].
>>>>
>>>> Would you be interested in stripping down what you are doing into a toy and, with my and possibly others' help, getting that going with Virgo with a view to contributing it as a sample? (I guess the best way would be to create a small project on github that I could then directly access rather than sending zips around, but you can call the shots here.)
>>>>
>>>> Regards,
>>>> Glyn
>>>> [1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=315867
>>>> On 9 Jul 2010, at 15:21, Peter Gardfjäll wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> as far as I can tell part of writing a custom artifact deployer for
>>>>> Virgo is to register an InstallArtifactTreeFactory in the OSGi service
>>>>> registry.
>>>>> I assume that all such factories get picked up by the Virgo runtime.
>>>>> Am I right so far...?
>>>>>
>>>>> If that is indeed the correct approach, one apparent problem that
>>>>> strikes me is that the ArtifactStorage interface, which is a parameter
>>>>> of the InstallArtifactTreeFactory.constructInstallArtifactTree method,
>>>>> is internal to the org.eclipse.virgo.kernel.deployer bundle (that is,
>>>>> its package is not exported).
>>>>> This makes it impossible for me to write a bundle with a custom tree factory.
>>>>> Maybe some restructuring is required to simplify the development of
>>>>> additional deployers?
>>>>> What are your thoughts?
>>>>>
>>>>> best regards, Peter
>>>>> _______________________________________________
>>>>> virgo-dev mailing list
>>>>> virgo-dev@xxxxxxxxxxx
>>>>> https://dev.eclipse.org/mailman/listinfo/virgo-dev
>>>>
>>>> _______________________________________________
>>>> virgo-dev mailing list
>>>> virgo-dev@xxxxxxxxxxx
>>>> https://dev.eclipse.org/mailman/listinfo/virgo-dev
>>>>
>>> _______________________________________________
>>> virgo-dev mailing list
>>> virgo-dev@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/virgo-dev
>>
>> _______________________________________________
>> virgo-dev mailing list
>> virgo-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/virgo-dev
>>
> _______________________________________________
> virgo-dev mailing list
> virgo-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/virgo-dev