Hi,
Amit Snyderman schrieb:
> On Sep 29, 2009, at 6:41 AM, Felix Meschberger wrote:
>
>>> Any way to add properties to the `SyntheticResource`?
>>
>> What do you mean by "add properties" ?
>>
>> If you are thinking about supporting the adaptTo method, you might
>> create your own extension of the SyntheticResource:
>>
>> Resource r = new SyntheticResource(...) {
>> public <T> T adapTo(Class<T> type) {
>> if (type == Map.class) {
>> return ...someMap...
>> }
>> return super.adaptTo(type);
>> }
>> }
>
> Interesting. This gets at what I had in mind:
>
> Resource r = new SyntheticResource(...) {
> public <T> T adaptTo(Class<T> type) {
> if (type == ValueMap.class) {
> ValueMap m = new ValueMapDecorator(new HashMap());
> m.put("text", "This is <b>the</b> body.");
> m.put("textIsRich", "true");
> return (T) m;
> }
> return super.adaptTo(type);
> }
> }
Sounds reasonable. If you intend the textIsRich property to be boolean,
you might even do:
m.put("textIsRich", true);
>
> Specifically I'm working with Day's CQ 5. We've got instances where we
> want to reuse a component to render content for a resource that doesn't
> exist in the JCR. There are probably better ways to design the
> circumstances for which we'll be using this but it seems like a handy
> trick for the moment.
AFAICT this is how it is intended to be used. There may be other
solutions (there is more than one solution most of the times ;-) ), but
I think this one is probably as fine as any other.
Regards
Felix