[ 
https://issues.apache.org/jira/browse/JSPWIKI-38?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659421#action_12659421
 ] 

Murray Altheim commented on JSPWIKI-38:
---------------------------------------

Janne,

Yes, I have realized I would have to rewrite all of the existing plugins for 
3.0. That represents about 45 plugins (of the publicly available ones; there 
are more private ones) and more than 150 classes, many of which will be 
affected. I assume that support for a lot of these in 3.0 will disappear, as I 
can't realistically rewrite that many plugins. Yes, I might be able to solicit 
some help. The Assertion Framework is about 20 plugin classes and a lot of 
tie-ins to the WikiEngine, PageManager, events code, etc. The TagManager would 
likewise need wholesale revision. I'm hoping all of my higher-priority classes 
can be migrated, otherwise I'll be forced to stay with 2.x.  I really don't 
want to be the Fletcher Christian of JSPWiki, believe me. We all know what it 
was like on Pitcairn Island for the survivors.

While we've not had interfaces, I've treated any of the *Manager classes as 
relatively stable entities, and in the past been able to maintain currency with 
the trunk through a constant migration. As I wrote, this was a relatively 
stable migration, and yes, it would have been mitigated had there been APIs. 

I have assumed that going to JCR meant a wholesale upending of any previous 
managers, but I have also assumed (perhaps wrongly) that the basic 
functionality of the manager classes would be *relatively* easy to recreate via 
some bridging manager classes. Are you saying there'd be no PageManager at all 
in 3.0? If there is, or there's something akin to it, it should be *relatively* 
easy to replicate the functionality via a bridging PageManager class that I can 
use. As for using factory classes rather than constructors, hey, I'm all for 
that. I don't mind rewriting stuff when it truly is a simplification but 
doesn't alter the fundamental structure and functionality. 

As you say, JSPWiki has been a set of classes on which you can. And I have 
hacked a great deal and now I must pay.

As for not permitting APIs within the regular class hierarchy, why is that a 
non-starter? Aesthetics? I've resisted making arguments based on aesthetics 
during this discussion. I may not be the world's cleanest coder, but of the 
~200K lines of code in Ceryle l've got interfaces and implementations in the 
same hierarchy, and I've got them in separate hierarchies. With versioning the 
interfaces over time (over seven years) I'm not sure that either has made a 
substantial difference. I've had to make changes in the interface based on 
changing project needs. Where the API was located would have made little 
difference. Interfaces vary in stability too.

But yes, I understand the difference and I don't think I disagree with you in 
the basics. A guarantee would be nice, but it would be only a relative 
guarantee and (to my mind) shouldn't come at the expense of significantly 
complicated code or package structure. Factories are by nature a bit more 
complicated, but god have I seen a variety of different approaches to that, 
some extravagantly complicated, others almost as simple as using a constructor. 

What about the idea of creating a single package {{org.apache.jspwiki.api.*}}, 
and placing within that the WikiEngine and all of the existing manager classes 
as interfaces (bridges to previous managers)? How different is that from what 
you're proposing? Why do the APIs need to be in some other hierarchy? [I don't 
have a problem with Foo and FooImpl being in the same package hierarchy or even 
the same package if Foo is labeled as a stable interface with a version number, 
where FooImpl is the default implementation.]

You keep writing things that I agree with, then you write something that 
seemingly contradicts that agreement. Perhaps I'm just misunderstanding you. 
Yes, we're just having a conversation towards finding a good solution to this. 
Thanks for your continued patience.


> Rename packages to "org.apache.jspwiki"
> ---------------------------------------
>
>                 Key: JSPWIKI-38
>                 URL: https://issues.apache.org/jira/browse/JSPWIKI-38
>             Project: JSPWiki
>          Issue Type: Task
>            Reporter: Janne Jalkanen
>            Assignee: Janne Jalkanen
>             Fix For: 3.0
>
>


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to