I CC: this discussion about problems with current Turbine-2 cvs to
Jetspeed-dev, so that everyone is aware of the status. Also, to provoke
discussion on Turbine convergence and code base clean up.
Jason van Zyl wrote:
>On 9/24/01 6:17 AM, "Santiago Gala" <[EMAIL PROTECTED]> wrote:
>
>>Jason van Zyl wrote:
>>
>>>On 9/21/01 11:06 AM, "Santiago Gala" <[EMAIL PROTECTED]> wrote:
>>>
>>>>Jason van Zyl wrote:
>>>>
>>>>>Hi,
>>>>>
>>>>>I've added ${variable} interpolation to the ExtendedProperties class so
>>>>>if you want to take advantage of this feature you'll have to update
>>>>>your commons-collections jar. This is for turbine 3.x. The variable
>>>>>interpolation now works in 2.x but the ResourcesService was modified
>>>>>directly.
>>>>>
>>>>Since you changed it (or maybe other changes in turbine-2 HEAD) jetspeed
>>>>no longer works. It builds, but all services that need this feature
>>>>receive empty strings. It seems related to a problem with the ordering
>>>>of service initialization, where the ${webappRoot}/${webapp.dir} vars
>>>>are not defined when we are trying to use them.
>>>>
>>>I just built jetspeed but didn't run it. I will try to find the problem
>>>ASAP. This is definitely a result of a lack of API and the oddness in which
>>>jetspeed has extended certain parts of Turbine.
>>>
>>>I'll look into it and find the problem. I think I know what the problem is.
>>>
>>I made it run by doing the following:
>>
>>- Changing webapp.dir to webappRoot everywhere (it includes TR.p, JR.p
>>and CastorRegistryService.java). It is funny as, from what I inspect the
>>code, it should not be needed. But it is :-?
>>
>
>I'm not following entirely. What do you need to do that you weren't
>expecting to have to?
>
>
As ${webapp.dir} is defined in VariableResourceService, and this code is
supposed to run unchanged, it should work. But it is not. It looks as a
true nightmare to debug, but I'll try in the next days.
But also ${webappRoot} is defined in TurbineResourceService (and we call
super.init(...)), so I don't understand why it is not expanded.
>
>>- Wrapping calls to serviceCont,getString() in
>>conf.getServletContext().getRealPath(). This is due to the fact that
>>${webappRoot} or ${webapp.dir} do not get expanded. I'm checking why it
>>happens in other cases. I think it is a race condition with service
>>initialization, but I'm not yet sure.
>>
>>< directory = serviceConf.getString("directory");
>>< mapFile = serviceConf.getString("mapping",DEFAULT_MAPPING);
>>---
>>
>>> directory = conf.getServletContext().getRealPath(
>>>
>>serviceConf.getString("directory") );
>>
>>> mapFile = conf.getServletContext().getRealPath(
>>>
>>serviceConf.getString("mapping",DEFAULT_MAPPING) );
>>
>>It looks like, in other uses of ${webappRoot}, it gets correctly
>>expanded. It looks again like the ResourceService returned by doing
>>
>> ResourceService serviceConf =
>>((TurbineServices)TurbineServices.getInstance())
>>
>>.getResources(RegistryService.SERVICE_NAME);
>>
>>(RegistryService.SERVICE_NAME equals "Registry")
>>
>>in the init( ServletConfig ) method of CastorRegistryService is not
>>properly initialized. We are inheriting the TurbineResourceService by a
>>VariableResourceService, and this can introduce problems during
>>initialization. I'm trying to find the problems and get rid of the
>>Jetspeed specific service, now that we have a turbine equivalent.
>>
>
>How about we work toward just using TurbineResources in Jetspeed and we'll
>move any remaining code in the the jetspeed VariableResources class into
>the TurbineResources class. The only code I've borrowed so far is variable
>interpolation in strings i.e. on the getString() method.
>
Yes, it looks as a good idea. I can take care to "remove"
VariableResourceService for Jetspeed, and send you patches for
TurbineResourceService (turbine-2)
WRT ExtendedProperties, I don't have a current working copy, to look if
the functionality is OK for us. I could checkout a copy.
>
>In the VariableResources class the interpolation is also implemented for
>getStringArray() and getVector() I believe. It would be nice if the code for
>VariableResources could be collapse into TurbineResources (and
>ExtendedProperties for Turbine 3.0) and have Jetspeed drop VariableResources
>all together.
>
If we have a smaller code base, and use more external modules, we will
have more people "working for us" ;) So we will be able to concentrate
in content aggregation.
>
>
>
>>>
>>>>Are you aware of such problem?
>>>>
>>>I wasn't aware of the problem, but I am making many changes to the TDK so
>>>that I can build all turbine applications to check for compatibility
>>>problems during runtime. Gump will catch problems in the build but what is
>>>happening with jetspeed is what I dread. People digging into the code
>>>anywhere and everywhere to get something to work.
>>>
>>If something can be done (the language allows it) and it is not clearly
>>documented, then you can not complain if people does it. I would say
>>that anything that is not forbidden is permitted.
>>
>
>So during development of a project that you know to be based on a parent
>project if something isn't clearly documented than you ask no questions and
>proceed as you wish? There is no doubt that with the Turbine 2.x code that
>you can do pretty much anything but do you honestly think this is the best
>thing for the project? I personally don't feel that's a good way to proceed
>and it's not good for your project.
>
>And I will definitely complain as the Jetspeed project continually and
>persistently implements functionality that should be present in Turbine:
>
>- variable interpolation is not portal specific
>
This was developed "experimentally" by Raphael, and the aim was to move
it to Turbine ASAP. That moving it takes six months is not entirely our
fault. FWIK, neither Raphael nor me are Turbine committers.
>
>- thread pooling is not portal specific
>
This was already there when Raphael and I joined Jetspeed. It was
originally developed by Kevin. We have just patched it to keep it
working. I don't see any similar service in Turbine.
>
>- disk caches are not portal specific
>
Ditto. I have patched this code extensively, but it is not originally
mine. It was developed by Kevin. Again, I don't know of any alternative
implementation, and it is surely needed (to avoid that each page hit
implies like 20 HTTP request to foreign servers, thus making Jetspeed
unusable).
>
>- daemons are not portal specific
>
Ditto.
>
>- localized template services are not portal specific
>
Again, this was offered as a patch to Turbine even before we had it
working. It was developed when turbine had nothing similar. I remember
that it was even considered bad in list discussions, as we needed
localization including ContentType. Even now, it does not support
generic resources (we need much more than localized templates, we need
localized resources). Currently, we have ContentType/Language/Country...
with a fall back.
>
>- and I could probably find 10 other examples
>
Not that many, I think you have already quoted most of the friction
points. :-) Now, I think we should go on moving code that is generic
enough to Turbine .
>
>
>Turbine is not well documented, everyone knows that but the Jetspeed project
>has never helped in this regard and continually makes additions which are
>expedient and serve the purposes of Jetspeed without much regard for
>Turbine.
>
Yes, we all know that Open Source is about choice and experimentation,
and then consolidation of good ideas. I will offer you a new one:
- Jetspeed has already a JSP Template Service (It has been migrated to
Turbine) and a Velocity Template Service (I think it is actually
Turbine's code). I'm working on a SAX XSLT Template Service. Should I
implement it directly as a Turbine Service or as a Jetspeed Service to
be migrated later to Turbine?
The idea is that, instead of having ECS objects or Byte/Character
Streams to aggregate the response, it will establish a chain of SAX
event handlers, and use SAX end to end. There will be adaptors to mix
Stream content with SAX content, so that a portal can mix the different
templates in the same page (it will not be efficient, though).
>
>This is probably a good place to start than. I think that general variable
>interpolation is something that all turbine apps could use so I'll make any
>additions to the ResourcesService so that it will work in jetspeed if you
>test jetspeed (I will soon be able to test it reliably myself).
>
>I have seen pretty much zero activity on the jetspeed cvs list so your
>divergent code base concerns me greatly because when there is activity the
>project usually diverges further from Turbine which I don't think is good
>for the Jetspeed project given how many complaints you still get about code
>not working and difficulty installing Jetspeed.
>
This is no longer true. Since approx one year ago, all changes are
bringing us more and more in line with Turbine. Most changes during this
period have been devoted to use Velocity instead of/in addition to JSP,
and to adapt Jetspeed to the Pull philosophy.
As we are closer, more conflicts get exposed, but this is not a bad
thing. It rather reflects that our code is closer to Turbine. When it is
not, it is due to our lack or knowledge or misunderstanding of Turbine
internals or forthcoming code. At least, that is how I see it.
>
>>>The variable interpolation is something that could have easily been added to
>>>the Turbine codebase but was instead added directly to jetspeed. I am using
>>>the code from jetspeed in the ResourceService in the turbine 2 repository so
>>>I should be able find it fairly soon.
>>>
>>>I would like to slowly try to align jetspeed with the code in Turbine
>>>because I'm not seeing much activity at all in jetspeed so the project would
>>>benefit from any and all removal/collapsing of code where there is an
>>>alternative in the turbine code base.
>>>
>>I'm wishing definitely to help here. I'm trying to reduce the Jetspeed
>>code base to be able to maintain it effectively. Getting rid of
>>duplications with turbine, as turbine evolves, is a must.
>>
>
>Great, glad to hear it.
>
>
>>Don't forget that a lot of these alternatives are there because we
>>started using them, and then a patch was sent to turbine. Quite a few
>>times, patches sent to turbine for behaviour we needed were ignored or
>>delayed.
>>
>
>I'll try not to let the patches slide, but I'm sure in some cases the
>patches were seen as not adequate or hackish and you guys expected us to put
>the code into Turbine because you needed some functionality that may not
>have been thoughout with the greater turbine whole in mind.
>
>I'm definitely willing to work with you to remedy the situation.
>
A big problem is that we have no time to digest the number of mail lists
we are subscribed to, and this means that sometimes we are not aware of
efforts in Turbine, or in Commons projects. This is a big problem, and I
will try to stay more in synchrony with Turbine in the future.
Also, I think we should release another Jetspeed alpha Real Soon Now, as
people is using versions that are old, both in terms of functionality
and of the version of Turbine they use. I think that when Turbine-2.2 is
released it would be a very good moment, and I expect it will happen
soon. This is the reason why I'm tracking Turbine-2 cvs very actively.
>
>>As an example, I still have code in Jetspeed to check and
>>escape commas in ExtendedProperties values, and the patch was sent to
>>turbine and never applied. If and when it is applied, how do I know my
>>duplicated method is no longer needed in the Jetspeed codebase?
>>
>
>Unit tests. Adding the code back to turbine and create unit tests. There are
>now two places for property handling code. ExtendedProperties in the commons
>collections used in turbine 3.0 and TurbineResources used in 2.x.
>
>I'm not saying it will be easy moving all your code back into Turbine but we
>have to try.
>
>I also believe that commas are escaped, I will check because I thought this
>was a feature. Was your patch for a bug you fixed or adding additional
>functionality?
>
It was a bug fix. ExtendedProperties did not escape commas in values
back then. We had values that contained commas inside, and this provoked
ClassCastExceptions in our code, as commas were taken as multiple
values. I'm not sure about its current state. I'm speaking about April
or so, before Turbine-2 release.
>
>
>>>I will soon be able to build and run jetspeed with the TDK and will be able
>>>to find problems like this. I still find the jetspeed layout entirely
>>>confusing and have only been able to get it to run on a few occasions. I
>>>would like to eliminate this problem.
>>>
>>Let us communicate, then. Feel free to ask any question about Jetspeed
>>internals (I don't know everything, Raphael and David know more about
>>internals than myself, but I'm good at debugging). Currently I'm working
>>on security and cleaning template implementation to add a new SAX
>>template engine.
>>
>
>Ok, I definitely will over the next while.
>
>
>>>>Jetspeed works with current snapshot
>>>>(nightly Sep 12). The change breaking us has taken place between Sep 13
>>>>and today.
>>>>
>>>>I'm not able to understand what's going on.
>>>>
>>>>>The upshot is that you can specify things like:
>>>>>
>>>>>myResouce = ${webappRoot}/resources/myResouce.xml
>>>>>
>>>>>
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]