An easier way might be the following:
1. Extend
org.apache.muse.ws.resource.properties.impl.SimpleResourcePropertyCollection
and override these five methods:
deleteResourceProperty(QName, Object)
getResourceProperty(QName)
hasProperty(QName)
insertResourceProperty(QName, Object[], Object)
updateResourceProperty(QName, Object[], Object)
These are the only methods that actually push down on the Capability API
to get/set property values. If you override them to use whatever dynamic
API/system you have for reading/writing properties, you don't need to
worry about loading the property data into the collection. You can just do
all the reads/writes/checks dynamically. Be sure to look at the existing
methods for tips on what types of faults you should throw.
2. Extend org.apache.muse.ws.resource.impl.SimpleWsResource like so:
public class MyWsResource extends SimpleWsResource
{
protected ResourcePropertyCollection createPropertyCollection()
{
return new MyResourcePropertyCollection() // defined in
step 1
}
}
3. Modify muse.xml so that the <java-resource-class/> refers to
MyWsResource instead of SimpleWsResource.
4. build. run.
"Rosberg Mattias" <[EMAIL PROTECTED]> wrote on 02/15/2007
06:57:10 AM:
> As indicated by my previous posts on the Muse forums I'm trying to
create a
> system that uses Muse to create resource properties dynamically,
starting from
> scratch when the system starts up. Since I don't know my properties in
advance
> it's not possible for me to create the corresponding getters and setters
in my
> Capability (that extends AbstractWsResourceCapability)
>
> This gives me problems when initializing my capability since the
reflection
> part in AbstractWsResourceCapability.createGettersAndSetters doesn't
find the
> correct method in my capability.
>
> A solution for me would be to handle my getters and setters in a more
generic
> way like overriding getProperty and setProperty and route all get and
set
> calls to these methods. The problem is that I can't access the
_gettersByQName
> and _settersByQName Maps since they are private in
AbstractWsResourceCapability.
>
> Is it be possible to make these members protected instead (a change
request on
> the code)? Many of the AbstractXXX classes might have similar members
that it
> might be wise to make protected in order to supply enough flexibility
for
> anyone extending these classes to fit their needs. I leave this to the
muse
> developers to decide/comment.
>
> /Mattias
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]