Re: [RT] The Real Component Simplification

2006-01-06 Thread Niclas Hedhman
On Thursday 05 January 2006 23:37, Berin Loritsch wrote:
 I don't recall if we tested extending where the
 URLStreamHandlers are located using the |java.protocol.handler.pkgs
 system property.

The general problem with the java.protocol.handler.pkgs is revolving around an 
obscure bug (which Sun will not fix) which gives the side effect that those 
protocol handlers MUST sit in system classloader (or higher), and that is 
somewhat troublesome for products like Cocoon.

IMHO, a big pity, since one could have done so much funky stuff with URL 
handlers otherwise.

The interesting thing around this is that the internal code that handles this 
probably been refactored so that an additional method call is introduced on 
the call stack. Reason, it looks at the callstack a couple of levels away and 
tries to determine the callee and use its classloader. But it is always 
seeing java.net.URL which classloader is null, so it calls 
ClassLoader.getSystemClassLoader(). I have been arguing over this since 
JDK1.2 came out, but Won't fix. is the categorical reply from Sun.


Cheers
Niclas


Re: [RT] The Real Component Simplification

2006-01-05 Thread Carsten Ziegeler
Daniel Fagerstrom wrote:
 
 Decomponentization could start right away. Do you have any concrete 
 examples of components that shouldn't be components?
 
The XMLSerializer/XMLDeserializer combo is one of the best examples, I
think. These shouldn't be components. If noone objects I'll do the
changes for 2.2 - we already discussed this years ago :)

Carsten
-- 
Carsten Ziegeler - Open Source Group, SN AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/


Re: [RT] The Real Component Simplification

2006-01-05 Thread Daniel Fagerstrom

Carsten Ziegeler wrote:


Daniel Fagerstrom wrote:
 

Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?


   


The XMLSerializer/XMLDeserializer combo is one of the best examples, I
think. These shouldn't be components. If noone objects I'll do the
changes for 2.2 - we already discussed this years ago :)

Carsten
 


+1

/Daniel



Re: [RT] The Real Component Simplification

2006-01-05 Thread Sylvain Wallez

Carsten Ziegeler wrote:

Daniel Fagerstrom wrote:
  
Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?


The XMLSerializer/XMLDeserializer combo is one of the best examples, I
think. These shouldn't be components.


Definitely!


If noone objects I'll do the changes for 2.2 - we already discussed this years 
ago :)
  


+1

Sylvain

--
Sylvain WallezAnyware Technologies
http://bluxte.net http://www.anyware-tech.com
Apache Software Foundation Member Research  Technology Director



Re: [RT] The Real Component Simplification

2006-01-05 Thread Vadim Gritsenko

Berin Loritsch wrote:

Daniel Fagerstrom wrote:

Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?


Pipeline (sure we have two implementations, but that doesn't mean it has 
to be a component)


Five implementations. And I imagine after interface cleanup and for pipeline 
API, pipeline should stay component.




URL interpretation


?


Just about anything that is not a Processor, Generator, Transformer, 
Serializer, or Reader.


You forgot Matchers, Selectors, and Actions. Every but small projects have bunch 
of those.


Stores. Swapped very frequently, several implementations, and Cocoon's default 
is not the fastest gun in the west.


Input/output modules. Tons of them.

It is very simplistic view of the world to declare that only P/G/T deserve to be 
components. I'd even go as far as claim that P/G/T are implemented by cocoon 
users the *least* often compared to other interfaces.


Vadim



As to Processors, I see the following implementations:
1. current sitemap--complete with its matchers, selectors, actions, and 
tree processor

2. rails-like router

The others are planned extension points that several people have written 
solutions for.




Re: [RT] The Real Component Simplification

2006-01-05 Thread Vadim Gritsenko

Daniel Fagerstrom wrote:

Carsten Ziegeler wrote:


Daniel Fagerstrom wrote:
 
Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?


  
The XMLSerializer/XMLDeserializer combo is one of the best examples, I

think. These shouldn't be components. If noone objects I'll do the
changes for 2.2 - we already discussed this years ago :)

Carsten
 


+1


+1

Vadim



Re: [RT] The Real Component Simplification

2006-01-05 Thread Berin Loritsch

Vadim Gritsenko wrote:


Berin Loritsch wrote:


Daniel Fagerstrom wrote:

Decomponentization could start right away. Do you have any 
concrete examples of components that shouldn't be components?



Pipeline (sure we have two implementations, but that doesn't mean it 
has to be a component)



Five implementations. And I imagine after interface cleanup and for 
pipeline API, pipeline should stay component.


Not necessarily.  Just because there are multiple implementations 
doesn't necessarily mean it is a component--or should be a component.  
There are some useful things we can do with a Pipeline such as using the 
Decorator pattern as opposed to inheritance to add features.  Or we 
could use other OO tricks that just aren't possible or too difficult in 
a component environment.



URL interpretation

?


SourceResolver and company



Just about anything that is not a Processor, Generator, Transformer, 
Serializer, or Reader.



You forgot Matchers, Selectors, and Actions. Every but small projects 
have bunch of those.


No, I left them out on purpose.  Those are elements of the 
Sitemap--which is an implementation of the Processor.


Stores. Swapped very frequently, several implementations, and Cocoon's 
default is not the fastest gun in the west.


Ok.  That works.



Input/output modules. Tons of them.


:/  I think that there are some better ways of dealing with this...  But 
it is an extension point that is useful.




It is very simplistic view of the world to declare that only P/G/T 
deserve to be components. I'd even go as far as claim that P/G/T are 
implemented by cocoon users the *least* often compared to other 
interfaces.


Well, as da Vinci said, Simplicity is the ultimate sophistication.  
The key point of the decomponentization process is to reduce the number 
of extension points to the absolute practical minimum.


By being brave about what we leave out, it forces us to think 
differently about other aspects of the system.  I'm thinking way forward 
here.




Re: [RT] The Real Component Simplification

2006-01-05 Thread Giacomo Pati

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Thu, 5 Jan 2006, Carsten Ziegeler wrote:


Date: Thu, 05 Jan 2006 09:47:01 +0100
From: Carsten Ziegeler [EMAIL PROTECTED]
Reply-To: dev@cocoon.apache.org
To: dev@cocoon.apache.org
Subject: Re: [RT] The Real Component Simplification

Daniel Fagerstrom wrote:


Decomponentization could start right away. Do you have any concrete
examples of components that shouldn't be components?


The XMLSerializer/XMLDeserializer combo is one of the best examples, I
think. These shouldn't be components. If noone objects I'll do the
changes for 2.2 - we already discussed this years ago :)


+1

- -- 
Giacomo Pati

Otego AG, Switzerland - http://www.otego.com
Orixo, the XML business alliance - http://www.orixo.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDvTNaLNdJvZjjVZARArhBAKDyvZP0PJFPGOoumN3qNszdd+kWtACg4KHO
deM/MQyF4esf76tP+m9wT14=
=Os2u
-END PGP SIGNATURE-


Re: [RT] The Real Component Simplification

2006-01-05 Thread Vadim Gritsenko

Berin Loritsch wrote:

Vadim Gritsenko wrote:


Berin Loritsch wrote:

Pipeline (sure we have two implementations, but that doesn't mean it 
has to be a component)


Five implementations. And I imagine after interface cleanup and for 
pipeline API, pipeline should stay component.


Not necessarily.  Just because there are multiple implementations 
doesn't necessarily mean it is a component--or should be a component.  
There are some useful things we can do with a Pipeline such as using the 
Decorator pattern as opposed to inheritance to add features.  Or we 
could use other OO tricks that just aren't possible or too difficult in 
a component environment.


May be



URL interpretation

?


SourceResolver and company


It proved to be very valuable extension point


Just about anything that is not a Processor, Generator, Transformer, 
Serializer, or Reader.


You forgot Matchers, Selectors, and Actions. Every but small projects 
have bunch of those.


No, I left them out on purpose.  Those are elements of the 
Sitemap--which is an implementation of the Processor.


Stores. Swapped very frequently, several implementations, and Cocoon's 
default is not the fastest gun in the west.


Ok.  That works.



Input/output modules. Tons of them.


:/  I think that there are some better ways of dealing with this...  But 
it is an extension point that is useful.


Unified object model and expression language could replace many of those.


It is very simplistic view of the world to declare that only P/G/T 
deserve to be components. I'd even go as far as claim that P/G/T are 
implemented by cocoon users the *least* often compared to other 
interfaces.


Well, as da Vinci said, Simplicity is the ultimate sophistication.  
The key point of the decomponentization process is to reduce the number 
of extension points to the absolute practical minimum.


By being brave about what we leave out, it forces us to think 
differently about other aspects of the system.  I'm thinking way forward 
here.


Just don't throw out baby in the heat of fight for simplification :)

Vadim


Re: [RT] The Real Component Simplification

2006-01-05 Thread Berin Loritsch

Vadim Gritsenko wrote:




URL interpretation

?



SourceResolver and company



It proved to be very valuable extension point


I'm not negating that, however the way it is currently implemented makes 
it difficult to use at times.  Again there are different ways of 
skinning this particular cat that would be more efficient.


I do recall why we didn't try to use Java's own URL component 
framework.  It really wasn't due to complexity of getting the 
URLStreamHandlers to communicate with Cocoon.  It was due to the fact 
that some web containers like BEA WebLogic and IBM WebSphere preset the 
static instance of URLStreamHandlerFactory, making it impossible for us 
to override it.  I don't recall if we tested extending where the 
URLStreamHandlers are located using the |java.protocol.handler.pkgs 
system property.


The advantage of using Java's extension mechanism here is that we would 
be able to use our cocoon:// URLs inside of FOP and any other library 
that relies on URLs.  If we don't rely on components for the core of 
Cocoon, then we have more flexibility on improving this point.

|

It is very simplistic view of the world to declare that only P/G/T 
deserve to be components. I'd even go as far as claim that P/G/T are 
implemented by cocoon users the *least* often compared to other 
interfaces.



Well, as da Vinci said, Simplicity is the ultimate sophistication.  
The key point of the decomponentization process is to reduce the 
number of extension points to the absolute practical minimum.


By being brave about what we leave out, it forces us to think 
differently about other aspects of the system.  I'm thinking way 
forward here.



Just don't throw out baby in the heat of fight for simplification :)



Right.  Although just because something is an extension point does not 
mean it has to necessarily be a component.




Re: [RT] The Real Component Simplification

2006-01-05 Thread Antonio Gallardo

Carsten Ziegeler wrote:


Daniel Fagerstrom wrote:
 

Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?


   


The XMLSerializer/XMLDeserializer combo is one of the best examples, I
think. These shouldn't be components. If noone objects I'll do the
changes for 2.2 - we already discussed this years ago :)
 


I never wrote avalon components for my cocoon needs. :-)
Hence, any step to a simpler architecture deserves a big +1!

Best Regards,

Antonio Gallardo.


Carsten
 





Re: [RT] The Real Component Simplification

2006-01-04 Thread Daniel Fagerstrom

Berin Loritsch skrev:
...
Much like Photoshop with filter plugins.  The 
block idea would be more analagous to complex macros for Photoshop.  
They may provide new plugins to use in the package, but they allow you 
to do predefined things.


I don't know enough about Photoshop to be able to follow your analogy. 
Are you talking about extension points and plugins as in Eclipse or are 
you talking about some other level of granularity?


...
The real component simplification is to get rid of the components that 
will never be swapped out.  It's unnecessary for them to be components 
anyway.  That makes the task of providing an Avalon bridge for existing 
components much easier.  And it achieves the goal that the internals are 
not a scary mess any more.


Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?


/Daniel


Re: [RT] The Real Component Simplification

2006-01-04 Thread Berin Loritsch

Daniel Fagerstrom wrote:


Berin Loritsch skrev:
...

Much like Photoshop with filter plugins.  The block idea would be 
more analagous to complex macros for Photoshop.  They may provide new 
plugins to use in the package, but they allow you to do predefined 
things.



I don't know enough about Photoshop to be able to follow your analogy. 
Are you talking about extension points and plugins as in Eclipse or 
are you talking about some other level of granularity?


Pretty much.


...

The real component simplification is to get rid of the components 
that will never be swapped out.  It's unnecessary for them to be 
components anyway.  That makes the task of providing an Avalon bridge 
for existing components much easier.  And it achieves the goal that 
the internals are not a scary mess any more.



Decomponentization could start right away. Do you have any concrete 
examples of components that shouldn't be components?



Pipeline (sure we have two implementations, but that doesn't mean it has 
to be a component)

URL interpretation
Just about anything that is not a Processor, Generator, Transformer, 
Serializer, or Reader.


As to Processors, I see the following implementations:
1. current sitemap--complete with its matchers, selectors, actions, and 
tree processor

2. rails-like router

The others are planned extension points that several people have written 
solutions for.