> And Allen: thanks for getting the migration started! It looks great
so far.
=)
-- Allen
>
> On 4/28/07, Anil Gangolli <[EMAIL PROTECTED]> wrote:
>>
>> I support making the jump to struts2 directly if that seems cleaner
>> to
>> you.
>>
>> --a.
>>
>>
>> ----- Original Message -----
>> From: "Allen Gilliland" <[EMAIL PROTECTED]>
>> To: <dev@roller.apache.org>
>> Sent: Friday, April 27, 2007 11:02 AM
>> Subject: Re: struts1 -> struts2 migration
>>
>>
>> > sure, that definitely sounds like a good option. Why don't we
>> tentatively
>> > plan for that and when you guys have more info on when the
>> > Hackathon
>> will
>> > take place just let me know and we can make a plan.
>> >
>> > -- Allen
>> >
>> >
>> > Matt Raible wrote:
>> >> I'd love to help, but will be out of town next week (ApacheCon),
the
>> >> following week (vacation in Florida) and teaching a training class
>> >> following that. With that being said, I believe there is a
Hackathon
>> >> at ApacheCon and both Dave and I will be there. Maybe we could
>> >> collaborate? I'm not sure the time or the place, but maybe we
can meet
>> >> on IRC and bang a few things out?
>> >>
>> >> Matt
>> >>
>> >> On 4/27/07, Allen Gilliland <[EMAIL PROTECTED]> wrote:
>> >>> Follow up on the struts2 migration stuff ...
>> >>>
>> >>> I've spent a little more time this week working on migrating the
>> couple
>> >>> of actions which I am planning to upgrade for my new 4.0 feature
>> work,
>> >>> which include the theme and template editing pages. I've also
redone
>> >>> the way the tabbed menu works so that it's no longer a custom
jsp tag
>> >>> and instead is just a normal tiles jsp.
>> >>>
>> >>> At this point I am strongly considering just doing the whole
>> migration
>> >>> for 4.0 and getting it out of the way. Basically, I think that
>> running
>> >>> struts1 and struts2 side by side is only going to complicate
>> things and
>> >>> make them more difficult and while it's extra work to get this
done I
>> >>> think it's worth it. The new struts2 actions are looking *soooo*
>> much
>> >>> nicer than the old ones and I think this will really enable us to
>> really
>> >>> treat the 4.x series as a chance to refine our UI and we just
>> can't (and
>> >>> don't want to) do that with struts1.
>> >>>
>> >>> Anyone have any strong opinions on this? I had doddling around
so I
>> >>> think I am just going to commit to this and find a way to make it
>> >>> happen. Anyone else still want to help?
>> >>>
>> >>> -- Allen
>> >>>
>> >>>
>> >>> Allen Gilliland wrote:
>> >>> > I just did my commit which contains the initial struts2
>> migration code
>> >>> > if anyone wants to look at it or play around with it. I left
>> all of
>> >>> the
>> >>> > old struts1 stuff in place and functioning, so nothing actually
>> points
>> >>> > to the struts2 actions. to get to them you'll have to hit
the urls
>> >>> > manually ...
>> >>> >
>> >>> > /roller-ui/register.rol
>> >>> > /roller-ui/menu.rol
>> >>> >
>> >>> > those should be all you need. you can register an account
with the
>> >>> > new
>> >>> > register form and then go to the new menu page and it will link
>> to the
>> >>> > other struts2 actions which are available.
>> >>> >
>> >>> > here's some highlights of the new struts2 code ...
>> >>> >
>> >>> > * features a new struts2 and tiles2 configs, struts.xml and
>> >>> > tiles.xml. both of these files are static and don't use
xdoclet to
>> >>> > get
>> >>> > generated at build time.
>> >>> >
>> >>> > * actions are now much cleaner and decoupled from the servlet
>> spec
>> >>> > so
>> >>> > they are easier to test and reuse.
>> >>> >
>> >>> > * i defined a base action class (UIAction) which provides a
>> number
>> >>> > of
>> >>> > reusable methods, basically things that used to be in
>> BasePageModel,
>> >>> > RollerSession, or RollerRequest. our new actions only need to
>> extend
>> >>> > that class and they get a *lot* of good stuff with basically no
>> >>> > effort.
>> >>> >
>> >>> > * i defined a couple of custom struts2 interceptors to make
our
>> >>> > lives
>> >>> > much easier. the first extracts highly reusable complex
attributes
>> >>> from
>> >>> > the request and sets them on the applied action, things like
>> access to
>> >>> > the authenticated user object and the weblog being worked
on. the
>> >>> other
>> >>> > interceptor provides a simple way for security enforcement to
>> >>> > be
>> >>> outside
>> >>> > of the action methods, so that we don't have to constantly be
>> checking
>> >>> > if(user.hasPermission(weblog, perm)) all over the place. there
>> are a
>> >>> > few methods which you can define in your action which can
tail the
>> >>> > security settings for whatever your action needs, like
>> >>> > enforcing
>> >>> certain
>> >>> > weblog permissions or user roles.
>> >>> >
>> >>> > * the jsps are much cleaner now and are using all struts2
tags.
>> >>> > i've
>> >>> > tried to eliminate as much scriptlet and other ugly stuff as
>> possible,
>> >>> > but theres still a few places that need to be cleaned up.
>> >>> >
>> >>> >
>> >>> > overall i'm quite happy with the way things have turned out and
>> think
>> >>> > that once we get more of the actions migrated to struts2 we'll
>> find we
>> >>> > have a lot more options with cool things we can do on the UI
>> >>> > and
>> the
>> >>> > code will be much nicer and easier to maintain.
>> >>> >
>> >>> > feel free to check it out and offer any comments you might
>> have. the
>> >>> > code is basically in these spots in the current trunk ...
>> >>> >
>> >>> > src/org/apache/roller/ui/core/struts2/
>> >>> > src/org/apache/roller/ui/core/util/struts2/
>> >>> > web/WEB-INF/jsps/core/struts2/
>> >>> > web/WEB-INF/jsps/tiles/struts2/
>> >>> >
>> >>> > -- Allen
>> >>> >
>> >>> >
>> >>> > Allen Gilliland wrote:
>> >>> >> Well, my real need for starting this migration is because I am
>> doing
>> >>> >> some work that will modify a couple existing actions and add
>> some new
>> >>> >> ones and I didn't want to keep doing more work in Struts1
since we
>> >>> >> are
>> >>> >> planning to EOL it from Roller, so it is my overall goal to
>> >>> >> get
>> the
>> >>> >> migration far enough that I can get that work done.
>> >>> >>
>> >>> >> As far as getting the initial part of the migration done as a
>> proof
>> >>> >> of
>> >>> >> concept, my goal is to migrate the "core" actions, which
>> includes 5
>> >>> >> actions for login, registration, profile update, weblog
>> creation, and
>> >>> >> the main menu. So far I have 4 of them done and I'm
planning to
>> >>> >> finish off the last one this morning and have all that ready
for
>> >>> >> commit today.
>> >>> >>
>> >>> >> That should lay the ground work but still leave a bunch of
>> actions to
>> >>> >> migrate, including the System Admin pages (5), Planet Admin
pages
>> >>> >> (3),
>> >>> >> and the Authoring pages (27). The authoring pages can be
>> broken up
>> >>> >> into smaller chunks of course.
>> >>> >>
>> >>> >> I don't have any real preference for what order we migrate
>> things in,
>> >>> >> I suppose my approach would just be to migrate the most useful
>> stuff
>> >>> >> first or the things that could benefit from Struts2 the
most. But
>> >>> >> anything that folks want to migrate is cool with me.
>> >>> >>
>> >>> >> -- Allen
>> >>> >>
>> >>> >>
>> >>> >> Don Brown wrote:
>> >>> >>> I'll be doing a BOF on migrating from Struts 1 to Struts 2 at
>> >>> JavaOne,
>> >>> >>> so I'd be keen to help out. Any particular set of modules
>> >>> >>> you
>> are
>> >>> >>> thinking of migrating first? I'd like to help where I can.
>> >>> >>>
>> >>> >>> Don
>> >>> >>>
>> >>> >>> On 4/17/07, Allen Gilliland <[EMAIL PROTECTED]> wrote:
>> >>> >>>> Cool, the more the merrier. I'll be sure to fire off any
>> questions
>> >>> >>>> that
>> >>> >>>> I have since I know they'll come up.
>> >>> >>>>
>> >>> >>>> The 2 actions I've migrated so far are pretty simple, so
there
>> >>> wasn't a
>> >>> >>>> whole lot that I had to work through for them. Once I start
>> >>> >>>> getting
>> >>> >>>> into some of the more complicated actions I'm sure there
will be
>> >>> more
>> >>> >>>> interesting decisions to make.
>> >>> >>>>
>> >>> >>>> Right now I am thinking of some ways to streamline the
>> process for
>> >>> >>>> accessing data and doing operations which are basically
required
>> >>> >>>> for
>> >>> >>>> all
>> >>> >>>> actions. For example, in pretty much every action we have a
>> test
>> >>> like
>> >>> >>>> this ...
>> >>> >>>>
>> >>> >>>> if(rollerSession.isAuthorizedToXXX(user, perms)) {
>> >>> >>>> // do action work
>> >>> >>>> } else {
>> >>> >>>> // denied
>> >>> >>>> }
>> >>> >>>>
>> >>> >>>> ... i want to separate out logic like that into
interceptors or
>> >>> >>>> some
>> >>> >>>> other way so that the actions get that work for free and
don't
>> >>> have to
>> >>> >>>> duplicate that code all over the place. same goes for
>> >>> >>>> things
>> like
>> >>> >>>> looking up the authenticated user and working weblog, which
>> >>> basically
>> >>> >>>> all actions require.
>> >>> >>>>
>> >>> >>>> i think i have some good ideas so far, but once i figure out
>> which
>> >>> >>>> ideas
>> >>> >>>> i think are best i can run them by the list and see if
>> >>> >>>> others
>> >>> >>>> agree.
>> >>> >>>>
>> >>> >>>> -- Allen
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> Matt Raible wrote:
>> >>> >>>> > I'd love to help with this migration, but unfortunately
have
>> >>> too much
>> >>> >>>> > on my plate to do anything. Since I've already done a
>> Struts 1 ->
>> >>> >>>> > Struts 2 migration on a couple projects, hopefully I can
help
>> >>> w/ any
>> >>> >>>> > questions you might have. From the looks of it, you've
>> probably
>> >>> >>>> > figured most things out.
>> >>> >>>> >
>> >>> >>>> > Matt
>> >>> >>>> >
>> >>> >>>> > On 4/16/07, Allen Gilliland <[EMAIL PROTECTED]>
wrote:
>> >>> >>>> >> I've spent a little time looking at this more closely and
>> I've
>> >>> got a
>> >>> >>>> >> couple of the more basic actions migrated and so far
>> >>> everything is
>> >>> >>>> >> looking good and I don't think we'll have any problems
>> running
>> >>> >>>> struts1
>> >>> >>>> >> and struts2 side-by-side while we migrate.
>> >>> >>>> >>
>> >>> >>>> >> I'd like to commit the work that I have so far which
>> changes the
>> >>> >>>> login
>> >>> >>>> >> and registration pages to use struts2. I've setup the
>> migration
>> >>> >>>> process
>> >>> >>>> >> (so far) in such a way that all of the struts2 code is
>> basically
>> >>> >>>> copied
>> >>> >>>> >> and modified versions of the struts1 stuff, so there is
>> >>> basically no
>> >>> >>>> >> replacement or modifications. This way it's easy to see
>> the two
>> >>> >>>> side by
>> >>> >>>> >> side while we work and we can easily switch between
>> struts1 and
>> >>> >>>> struts2
>> >>> >>>> >> if that were ever necessary.
>> >>> >>>> >>
>> >>> >>>> >> So if nobody objects I'd like to commit my initial
>> >>> >>>> >> struts2
>> >>> support
>> >>> >>>> >> tomorrow. The commit list is this ...
>> >>> >>>> >>
>> >>> >>>> >> M metadata/xdoclet/global-forwards.xml
>> >>> >>>> >> M metadata/xdoclet/servlet-mappings.xml
>> >>> >>>> >> M metadata/xdoclet/filter-mappings.xml
>> >>> >>>> >> M metadata/xdoclet/filters.xml
>> >>> >>>> >> A
>> >>> >>>> >> src/org/apache/roller/ui/core/MigratingUIModel.java
>> >>> >>>> >> A src/org/apache/roller/ui/core/struts2
>> >>> >>>> >> A
src/org/apache/roller/ui/core/struts2/LoginAction.java
>> >>> >>>> >> A
>> src/org/apache/roller/ui/core/struts2/RegisterForm.java
>> >>> >>>> >> A
>> >>> >>>> >> src/org/apache/roller/ui/core/struts2/UIActionSupport.java
>> >>> >>>> >> A
>> >>> >>>> >>
>> >>>
src/org/apache/roller/ui/core/struts2/MigratingUIActionSupport.java
>> >>> >>>> >> A
>> >>> src/org/apache/roller/ui/core/struts2/RegisterFormBean.java
>> >>> >>>> >> M
>> >>> src/org/apache/roller/ui/core/struts/actions/LoginAction.java
>> >>> >>>> >> M
>> >>> >>>>
src/org/apache/roller/ui/core/struts/actions/UserNewAction.java
>> >>> >>>> >> A src/org/apache/roller/ui/core/util/UIUtils.java
>> >>> >>>> >> A src/org/apache/roller/ui/core/UIModel.java
>> >>> >>>> >> M build.xml
>> >>> >>>> >> A
>> >>> >>>> >> tools/struts-2.0.5/lib/tiles-api-2.0-20070130.184344-3.jar
>> >>> >>>> >> A
tools/struts-2.0.5/lib/struts2-tiles-plugin-2.0.5.jar
>> >>> >>>> >> A
>> >>> tools/struts-2.0.5/lib/tiles-core-2.0-20070130.184344-3.jar
>> >>> >>>> >> M properties.xmlf
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2
>> >>> >>>> >> A
web/WEB-INF/jsps/tiles/struts2/tiles-mainmenupage.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/menu-editor.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/menu-admin.jsp
>> >>> >>>> >> A
>> >>> >>>> >> web/WEB-INF/jsps/tiles/struts2/tiles-tabbedpage.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/css-nosidebar.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/footer.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/empty.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/css-sidebar.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/head.jsp
>> >>> >>>> >> A
>> >>> >>>> >> web/WEB-INF/jsps/tiles/struts2/tiles-simplepage.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/tiles-errorpage.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/search.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/banner.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/messages.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/bannerStatus.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/tiles/struts2/title.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/core/struts2
>> >>> >>>> >> A web/WEB-INF/jsps/core/struts2/RegisterForm.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/core/struts2/Login.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/core/struts2/Welcome.jsp
>> >>> >>>> >> A web/WEB-INF/jsps/taglibs-struts2.jsp
>> >>> >>>> >> M web/WEB-INF/jsps/setupBody.jsp
>> >>> >>>> >> A web/WEB-INF/tiles.xml
>> >>> >>>> >> M web/WEB-INF/security.xml
>> >>> >>>> >> M web/WEB-INF/classes/roller.properties
>> >>> >>>> >> A web/WEB-INF/classes/struts.properties
>> >>> >>>> >> A web/WEB-INF/classes/struts.xml
>> >>> >>>> >>
>> >>> >>>> >>
>> >>> >>>> >>
>> >>> >>>> >> Anil Gangolli wrote:
>> >>> >>>> >> >
>> >>> >>>> >> > The last paragraph sounds like a good start. I'm not
>> >>> >>>> >> > familiar
>> >>> >>>> with
>> >>> >>>> >> > Struts 2 yet so won't be of much help.
>> >>> >>>> >> >
>> >>> >>>> >> > --a.
>> >>> >>>> >> >
>> >>> >>>> >> > ----- Original Message ----- From: "Allen Gilliland"
>> >>> >>>> >> > <[EMAIL PROTECTED]>
>> >>> >>>> >> > To: <dev@roller.apache.org>
>> >>> >>>> >> > Sent: Friday, April 13, 2007 2:36 PM
>> >>> >>>> >> > Subject: struts1 -> struts2 migration
>> >>> >>>> >> >
>> >>> >>>> >> >
>> >>> >>>> >> >> we talked about this in the 4.0 planning discussions
and i
>> >>> >>>> believe
>> >>> >>>> >> >> that everyone was in agreement that starting with
>> Roller 4.0
>> >>> >>>> we would
>> >>> >>>> >> >> be moving to jdk 1.5 and introducing struts2 as the
next
>> >>> >>>> generation
>> >>> >>>> >> >> framework to replace our current struts1 stuff. since
>> i am
>> >>> >>>> planning
>> >>> >>>> >> >> to do a reasonable amount of work which requires
>> modifying or
>> >>> >>>> adding
>> >>> >>>> >> >> things to our authoring forms i'd really like to do
>> them in
>> >>> >>>> struts2 so
>> >>> >>>> >> >> that my work isn't going to be wasted, so that means
it's
>> >>> >>>> >> >> time
>> >>> >>>> to at
>> >>> >>>> >> >> least start the migration and get to a point where we
>> start
>> >>> >>>> developing
>> >>> >>>> >> >> new pages and forms in struts2.
>> >>> >>>> >> >>
>> >>> >>>> >> >> i've started looking into this and playing around with
>> it a
>> >>> >>>> little bit
>> >>> >>>> >> >> and if anyone else is interested in this then i would
>> love to
>> >>> >>>> get some
>> >>> >>>> >> >> help. so far i've just done some reading on the
topic and
>> >>> >>>> noting down
>> >>> >>>> >> >> a general strategy so if anyone has experience with
>> this and
>> >>> >>>> wants to
>> >>> >>>> >> >> help, please let me know.
>> >>> >>>> >> >>
>> >>> >>>> >> >> right now i think my initial goal is to get the app
>> >>> >>>> >> >> configured
>> >>> >>>> so that
>> >>> >>>> >> >> struts1 and struts2 actions and forms can run side by
>> side,
>> >>> >>>> and then i
>> >>> >>>> >> >> want to migrate a small set of the existing actions to
>> >>> detail the
>> >>> >>>> >> >> process.
>> >>> >>>> >> >>
>> >>> >>>> >> >> -- Allen
>> >>> >>>> >> >>
>> >>> >>>> >> >
>> >>> >>>> >>
>> >>> >>>> >
>> >>> >>>> >
>> >>> >>>>
>> >>>
>> >>
>> >>
>> >
>>
>>