[Yanel-dev] policy viewer refactoring (inside "policymanager"
resource-type)
Guillaume Déflache
guillaume.deflache at wyona.com
Mon Mar 22 19:14:34 CET 2010
Michael Wechner schrieb:
> Guillaume Déflache wrote:
>> Hi!
>>
>> For a project I need to implement some specific behaviour for the
>> policy viewer.
>> So as to also reuse existing Yanel code for other unchanged things I'd
>> need to be able to reuse parts of the existing Yanel implementation.
>>
>>
>> ATM alas the policy viewer is implemented by calling the sole static
>> method PolicyViewer#getXHTMLView(PolicyManager pm, GroupManager gm,
>> String path, String contentItemId, [other view options' parameters])
>> which does not allow any kind of overriding.
>>
>>
>> I'd like to introduce the following method in
>> org.wyona.yanel.impl.resources.policymanager.PolicyManagerResource:
>>
>> protected PolicyViewer getPolicyViewer(PolicyManager pm,
>> GroupManager gm, [other view options' parameters]);
>>
>> with the visible API of PolicyViewer being:
>>
>> InputStream getXHTMLInputStream(String path, String contentItemId)
>> throws Exception
>>
>> Then I would be able to just change the used resource-type in
>> $MY_SPECIFIC_REALM_DIR/src/webapp/global-resource-configs/policy-manager_yanel-rc.xml
>> to one using my own PolicyViewer-based Java class!
>>
>> WDYT?
>
> What exactly would you like to do?
The 1st thing I would like to do is to able to use the existing
PolicyManagerResource as it is now, except I'd like to replace the
PolicyViewer by another project-specific class, possibly reusing some
parts of Yanel's original PolicyViewer implementation at a later stage.
> The reason I am asking is because I think "overriding/inheritance" is
> not always a good thing and maybe it's better to introduce
> appropriate interfaces.
I do suggest introducing an API when I write "the visible API of
PolicyViewer", even if in this 1st step it would not be a Java interface
per se.
But indeed we should introduce a PolicyViewerV1 Java interface at some
point, except for now I am not 100% sure if what I suggest is sufficient
even for my own needs and if I would not need a finer-grained one later
on. So I'd rather use a class than an interface at this point to avoid
setting it in stone too early.
Hope this clears things a bit.
Cheers,
Guillaume
More information about the Yanel-development
mailing list