I looked at this some more and I think we can make a change in core to support loading of custom component types. This will allow us to get rid of having to use encapsulation for component types. Also, the async invoker should move into an extension class in core. Finally, I think ObjectFactory can replace EasyInstanceFactory. Given this, the classes that remain are:
- EasyComponent
-EasyComponentBuilder
-EasyImplementation
-EasyImplementationBuilder
- EasyInvoker

Assuming we make the above mentioned change in core, most of the above code contains "template" code that would have to be integrated with container-specific code (e.g. handling of references). Given that, would it be better to just document these code snippets in the extension documentation as they are generally three-line statements? I may be missing some extra functionality so please let me know.

Jim


On Oct 9, 2006, at 11:47 AM, Jim Marino wrote:


On Oct 9, 2006, at 3:42 AM, ant elder wrote:

On 10/7/06, Jim Marino <[EMAIL PROTECTED]> wrote:


On Oct 7, 2006, at 10:42 AM, Jim Marino wrote:

>
> On Oct 7, 2006, at 7:22 AM, ant elder wrote:
>
>> This is all working quite well now so i'd like to move it from my
>> sandbox to
>> be with the other containers. BSF 2.4 has just come out and the
>> jar is
>> available from a proper maven repo and the script container
>> supports all the
>> SCA things like references, properties and async, also the start of a
>> website page describing it which I'll move to the site once its a
>> bit more
>> done:
>> https://svn.apache.org/repos/asf/incubator/tuscany/sandbox/ant/
>> container.script/doc/sca-java-container-script.xml
>>
>> https://svn.apache.org/repos/asf/incubator/tuscany/sandbox/ant/
>> container.script/
>> https://svn.apache.org/repos/asf/incubator/tuscany/sandbox/ant/
>> container.easy/
>>
> I'm fine with this as long as the name of "container.easy" can be
> changed to something that denotes it has to do with scripting,
> something like "container.bsf".
>
After looking at the code more instead of having something separate,
why wouldn't we look to see if we can merge the "easy container" into the extension API? I'd like to get a clearer direction on this before
we move things around.

Specifically, I have a few questions related to this:

1. Is this container just for scripting? It appears not to be tied to
scripting
2. What value does this container provide over the extension API?
Does it automate certain coding tasks only relevant to a subset of
containers or all containers? Could we just merge such automation
with AtomicComponentExtension
3. There appears to be a bit of code duplication, some of which may
be a vestige from the Groovy container which needs to be refactored.
For example, AsyncInvoker. In a merge, maybe we could eliminate the
need for this?

Jim


Way back I was moaning about the complexity of the SPI and it was suggested having a separate extension project for a simplified SPI for extensions with
simpler requirements.
Could you outline where you think core is too complex for "simple requirements"? I'd like to get an extension into core. What I specifically want to avoid is creating a parallel extension mechanism.
I can't find a link, maybe the 1st sandbox phone call
or an old IRC chat? Thats where this came from. Its not quite finished yet, there's some parts that could be simplified further. I'd also like to do the same thing for bindings but haven't got to that yet. This is not necessarily tied to only scripting containers but thats all we've tried it with so far, and as Venkat suggests there likely is a bit more work required to make it more generally useful. There probably are some parts that could be moved to existing SPI classes, but there are also parts that may be a bit inflexible to be made part of the general extension SPI. As you point out the async bit does seem pretty isolated so that probably could be easily moved out. Given we're trying to get an M2 release out real soon I'm not sure about messing with the existing SPI classes now. How about for now moving the obvious bits
like async out but keeping the rest in say a separate
container.helperproject or in a separate SPI package like
org.apache.tuscany.spi.extension.container?

What parts are you suggesting to move up? I definitely do not want to create another SPI package. Perhaps you could list the parts of the classes you would move into a helper library as well as the areas they are trying to simplify? This way we could decide whether the core spi can be simplified directly? To start with, I assume the following would not be included:

- AsyncTargetInvoker
- AsyncMonitor
- EasyInstanceFactory since that can be done using an ObjectFactory

Some specific questions I have are:

- How are script scopes handled? I'm assuming we want to have the runtime manage statefull scripts, as we get that for free.

- I also noticed the scope is set by default to Module. The default SCA Java is stateless. I agree module scope may be a better default but do you think we should be consistent with other SCA language specs here?

- EasyComponentType encapsulates another ComponentType. I would have thought there would be an inheritance relationship. Was this because we need a specialization of ComponentType to be created by the generic side-file loader? If so, I think we should fix that in core.

- More generally on component types, I haven't been following the PHP spec work but my understanding based on proposals from the people working on it to the assembly group is that the trend is to move away from having to author side-files and more towards code- level metadata and defaults. Would we want to emphasize that? Maybe you could ping Graham Charters who has been working on these issues?

- Do scripts need to be defined by the Java idl or could I use WSDL or JSON or something else (assuming the proper extension)?

- What does EasyInstanceFactory.getResponseClasses(List<Class> services) do?

- How are references handled? Can they be injected onto fields in prototype-based languages?

I think the best way to figure out what would go into core versus an extension library is to get a list of classes you propose moving into core versus into the library. Does that work for you?

Jim

  ...ant

  ...ant


---------------------------------------------------------------------
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]

Reply via email to