David Jencks wrote:

On Nov 26, 2008, at 1:25 PM, Emmanuel Lecharny wrote:

David Jencks wrote:
Sorry this slipped by the first time...
np, I was also pretty busy myself :)

I don't know of any way to do this. Are these methods really not setters? Why are the called setXXX if they aren't setting configuration parameters?
They are setters, but not some I want to set dynamically with a config file. Usually, the config file is there to help the user to configure the system, and should not expose useless parameters. But as this file is generated from the code, obviously, there is a problem.

An annotation (something like @xbeans.hidden) could be used to mask such a parameter.


I'll try to find time to look further but have a lot of projects piling up.
Np. It's not urgent anyway.

Thanks !

I looked a little more... it looks to me as if there might be a design problem masquerading as an xbean problem. Here's your list of problems that I've annotated:

- DatagramAcceptor
- SocketAcceptor
I don't see how NTP can function without these being set... how do requests get in?
I don't use anymore those two classes. They have been designed once upon a time to allow xbean to feed the real Acceptors (which are MINA data structure). I would rather prefer to feed the direct MINA objects instead, but I have no idea how this is possible.

So currently, I have added some parameters to the servers.

- DirectoryService (we don't use it for the NtpServer)
So, it should be protected getter/setter in AbstractDirectoryService or better just not there at all
But if they are protected, there is no way we can access them from a Java class which is not extending the NtpServer class. Bad, IMHO.

- ServiceID (This is a technical info which will never change)
- ServiceName (This is a technical info which will never change)
I think these should be final in AbstractDirectoryService and set in the constructor. At least don't have public setters for them even if they aren't final
To be double checked. We may have more than one Directory service, hence more than one name, so we may have access to these members.

- started (it's a protected boolean set by the server itself, no need to configure it)
setStarted doesn't make much sense to me.  start() and stop() methods do.
True.

- TransportProtocols
Either these actually can be meaningfully set, or they should be set in the AbstractDirectoryService constructor, or they shouldn't be in AbstractDirectoryService at all.

Another possibility is that AbstractDirectoryService is not a suitable superclass for NTPServer

---
A comment on philosophy...
In geronimo we started out making you explicitly describe which attributes were exposed for configuration and which operations could be called through the kernel. Everyone without exception hated us
:) Strange... It was Geronimo, not Maven you were working on !
and complained bitterly both about the difficulty of writing components and about not having everything exposed through the kernel. We basically gave up on this attempt to separate stuff into "manageable" and "public but not manageable". I supported the separation for a long time but it really doesn't buy you anything and definitely makes understanding the code more difficult. So, I really encourage you to make the classes so that everything that looks like a settable configuration property really is a settable configuration property.
I will think about that a couple of days. Maybe the way I did was not the best.


One important point though : I would really like to access to MINA objects which are already Xbeanized (ie, XXXAcceptor). How can I do that ?

--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to