struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David H. DeWolf" <>
Subject [tiles2] ComponentDefinitions - exposed implementation detail?
Date Tue, 31 Oct 2006 21:10:05 GMT
I'm wondering why the ComponentDefinitions interface has been exposed 
outside of the DefinitionsFactory.  To me, this class seems like an 
implementation detail of the factory itself, and it should not be exposed.

Currently the interface is only used in three points outside of the 
DefinitionsFactory (besides in tests):

1) TilesFilter - used for refreshing the component definitions
2) TilesUtilImpl - used to share the instance with the world
3) ComponentDefinition - used to resolve hierarchy

I don't think any of these require the component definitions.  I'd like 
to discuss refactoring them in the following manner:

1) Encapsulate the refresh logic in the DefinitionsFactory.  The filter 
will change to:

if(factory.refreshRequired()) {
     // replace refresh logic with a call
     // to the factory, removing the reference
     // to ComponentDefinitions

2) TilesUtilImpl only exposes the ComponentDefinitions in order to allow 
the Filter (#1) to access them.  This reference can easily be removed.

3) Encapsulate the hierarchy resolution within the DefinitionsFactory, 
allowing the resolution to occur during initialization.

I believe that this refactor will remove some complexity and the 
cyclical dependency which has been created between the 
DefinitionsFactory and it's runtime environment.  IMHO, the 
DefinitionsFactory should only be concerned with creating 
ComponentDefinition objects, it should not need to know anything about 
it's outside environment (see the current call to the Application Scope 
map in order to re-retrieve the ComponentDefinitions).


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message