Hello Bram, On 18 Aug 2011, at 21:13 , Bram de Kruijff wrote:
> a couple more notes/questions on the configuration mechanism. > > 1) Seems that (at least) using the REST api I am required to set > "processorPid" : "org.osgi.deployment.rp.autoconf". Without it the > artifact will be created, but once associated to a target things fail > (exception below). From an api user perspective this feels > inconsistent (as it is different form bundles where you can leave it > empty or commit it altogether) and/or at least I'd expect an error on > creation because it apparently is required. Here I can safely say I was not done yet with the REST API, and I agree we could help the user a bit more! > From an implementation > perspective I am wondering why it needs to be specified at all as the > helpers map mimetypes to processors anyway. I'd have to take a closer look to see why we did this. Perhaps Angelo remembers? :) > Server side logged exception when leaving the attribute empty string: > (note the empty string in the message ;) > > [Warn ] > [012]org.apache.ace.client.repository.stateful.StatefulGatewayRepository;org.osgi.service.event.EventHandler: > EventAdmin: Exception during event dispatc > h [org.osgi.service.event.Event > [topic=org/apache/ace/client/repository/public/Group2LicenseAssociation/ADDED] > | [org.apache.ace.client.repository.stateful.Stat > efulGatewayRepository, org.osgi.service.event.EventHandler] | > Bundle(org.apache.ace.client.repository.impl [12])] > java.lang.IllegalStateException: Unable to create deployment version: > there is no resource processing bundle available that publishes > at > org.apache.ace.client.repository.stateful.impl.StatefulGatewayRepositoryImpl.getNecessaryDeploymentArtifacts(StatefulGatewayRepositoryImpl.java:495) > > > Server side logged exception when omitting the attribute: > > g! java.lang.IllegalArgumentException: Neither the key nor the value > should be null.[Warn ] > [012]org.apache.ace.client.repository.stateful.StatefulGatewayReposi > tory;org.osgi.service.event.EventHandler: EventAdmin: Exception during > event dispatch [org.osgi.service.event.Event > [topic=org/apache/ace/client/repository/publ > ic/Group2LicenseAssociation/ADDED] | > [org.apache.ace.client.repository.stateful.StatefulGatewayRepository, > org.osgi.service.event.EventHandler] | Bundle(org.apa > che.ace.client.repository.impl [12])] > > at > org.apache.ace.client.repository.impl.DeploymentArtifactImpl.addDirective(DeploymentArtifactImpl.java:98) Point taken, we can make this a lot less cryptic! > 2) The velocity based properties substituion in metatype works once > you find out you need to wrap the in "${context.<tag>}". Documenting > this will save a lot of people a lot of searching and frustration ;) > As of yet I am unclear whether I can use the more powerful stuff such > as "foreach( $license in $gateway.children)" as described at > http://incubator.apache.org/ace/template-mechanism.html, but from the > implementation I guess not? Agreed, part of that document is still "wishful thinking". It needs an update. Do you need the "more powerful stuff"? > Furthermote I am wondering about why velocity is used at all. The > metatype provides us with declarative attributes descriptions that > allows UIs to provide appropriate input fields (eg felix webconsole) . > It could allow webui for example to spawn a "specify required missing > attributes" dialog upon association to a target. The velocity model is > non declarative making this stuff harder? There are a couple of reasons why we used Velocity for this: 1) Not every bundle that has configuration data uses the metatype specification, so we cannot rely exclusively on it. 2) When we implemented this, webconsole did not exist yet, and I had not seen many people use metatype. I do think it's a nice idea to add support for metatype to allow you to create configurations for the bundles you want to deploy. I don't see how we can ever determine that if you associate a bundle to a target that nobody already specifies properties for a bundle, so I don't think we can spawn a dialog when you associate a bundle with a target. However, we can recognize that a bundle has static metatype information associated with it, and we can create a dialog to provide that data and store it in the OBR so you can deploy it alongside the bundle. Greetings, Marcel