Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: AW: [eclipse-incubator-e4-dev] Extension registry evolution- cross-posted from equinox-dev

But why not making it configurable which i proposed? Would this make
everyone happy?

Tom
Christian Campo schrieb:
> Ed,
> 
> I think thats what I said (or meant) that .exsd maybe not .xsd but since
> .xsd exist and is powerful enough for anything that is missing you could
> enhance it do what you want. (i.e. numbers, date etc.)
> 
> I am not about this bloat versus non-bloat thing. (or that it helped me
> understand your point)
> 
> Yes we are providing yet another binding for XML (quite obvious) and it
> was posted as reply to Oleg who also posted Yet another binding
> proposal. Just as an alternative. I am not saying either one is good or
> bad. But just there are multiple angles to attack this problem that he
> is trying to solve. Our code exists and it works already for all we can
> say.
> 
> I am also not sure that we are after this non-bloat thing (whatever that
> means in this context, I think there is code bloat, API bloat and
> probably others). We want to avoid using this DOM like API that is
> called IConfigurationElement using a very simple XML binding.
> 
> Of course everything looks like a EMF problem/solution for some but
> thats ok from your angle or Tom's angle. No criticism intended.
> 
> christian
> 
> Am 30.09.2008 um 12:29 schrieb Ed Merks:
> 
>> Christian,
>>
>> A *.exsd isn't a *.xsd.  It's very much like a *.xsd, but
>> unfortunately different.  Note in particular the lack of any mention
>> of the http://www.w3.org/2001/XMLSchema namespace.  So it's yet
>> another modeling language...
>>
>> Also, it seems what you're providing is yet another XML binding
>> framework for this modeling language.  It's definitely interesting and
>> useful, but it's yet another one.
>>
>> I know all these things are done to avoid bloat, but it should be
>> clear that n groups each avoiding bloat end up creating n solutions
>> each of which combine to cause bloat.  It's also interesting that the
>> binding is injected by the client rather than supplied by the
>> extension point provider, but that seems like yet another way to cause
>> bloat as each client provides their own binding...
>>
>> Please don't take this as criticism of the design nor the ideas.  It's
>> definitely interesting, flexible, and useful compared to manipulating
>> IConfigurationElement, which is yet another DOM API intended to avoid
>> the bloat of using DOM directly...
>>
>>
>>
>> Christian Campo wrote:
>>> Hi Tom,
>>>
>>> look at the IData structure below. You find thinks like @MapName
>>> which maps an attribute with name "x" to certain getter in the
>>> interface with possibly different name. So that is one way to do
>>> customization.
>>>
>>> I am not sure I agree we your point on .exsd since it uses XML Schema
>>> inside. There is already some editor in the PDE and if you look for
>>> more types or more structure then I guess XSD has enough
>>> possibilities and its own type system for defining any possible
>>> definition that you want to put in XML.
>>>
>>> So what metadata are you missing that you could not get out of XSD ?
>>> (but find in XMI)
>>>
>>> christian
>>>
>>> Am 30.09.2008 um 11:27 schrieb Tom Schindl:
>>>
>>>> Hi Christian,
>>>>
>>>> My main problem with the current extension-point is that the .exsd is
>>>> not a real meta data definiton one can use to create a full featured
>>>> editor to make creation as easy as possible.
>>>>
>>>> So let me rephrase my question. Is it possible to customize how the
>>>> translation from the contributed XML definition is translated into
>>>> Java-Objects and if I e.g. know that I contribute an XMI-Fragment I can
>>>> directly feed this into emf deserialisation chain.
>>>>
>>>> Tom
>>>>
>>>> Campo, Christian schrieb:
>>>>> Hi Tom,
>>>>>
>>>>> to underline what Stefan wrote, we have a good testcase that is nearly
>>>>> the structure that you are talking about.
>>>>>
>>>>> The plugin xml is like this:
>>>>> <plugin>
>>>>>  <extension id="core.test.extpoint.id6" point="core.test.extpoint">
>>>>>     <test
>>>>>           required="false"
>>>>>           objectType="java.lang.String"
>>>>>           text="test6">
>>>>>           <data info="rmation"/>
>>>>>           <moreData id="more-one" name="Hugo"/>
>>>>>           <moreData id="more-two" name="Hella"/>
>>>>>     </test>
>>>>>  </extension>
>>>>> </plugin>
>>>>>
>>>>> The testcase goes like this:
>>>>>       public void
>>>>> testWithUnknownTypeAndSingleDataAndOneNestedSingleElementAndTwoNestedMultipleElements()
>>>>>
>>>>> {
>>>>>               printTestName();
>>>>>               addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
>>>>>               addPluginXml(ExtensionInjectorTest.class,
>>>>> "plugin_ext6.xml");
>>>>>               ConfigurableThingSingleData target = new
>>>>> ConfigurableThingSingleData();
>>>>>               ExtensionInjector injector =
>>>>> Inject.extension("core.test.extpoint").expectingExactly(1).into(target).update(
>>>>>
>>>>>                               "configure").andStart(getContext());
>>>>>               assertNotNull(target.getData());
>>>>>               assertFalse(target.getData().getRequired());
>>>>>               assertFalse(target.getData().isRequired());
>>>>>               assertEquals("test6", target.getData().getText());
>>>>>               assertEquals(String.class,
>>>>> target.getData().createObjectType().getClass());
>>>>>
>>>>>               IData2 data2 = target.getData().getNews();
>>>>>               assertNotNull(data2);
>>>>>               assertEquals("rmation", data2.getInfo());
>>>>>
>>>>>               IData3[] data3 = target.getData().getMoreData();
>>>>>               assertNotNull(data3);
>>>>>               assertEquals(2, data3.length);
>>>>>               assertEquals("more-one", data3[0].getId());
>>>>>               assertEquals("Hugo", data3[0].getName());
>>>>>               assertEquals("more-two", data3[1].getId());
>>>>>               assertEquals("Hella", data3[1].getName());
>>>>>
>>>>>               removeExtension("core.test.extpoint.id6");
>>>>>               removeExtensionPoint("core.test.extpoint");
>>>>>               injector.stop();
>>>>>       }
>>>>>
>>>>> IData the structure that gets injected into
>>>>> ConfigurableThingSingleData
>>>>> is used for many testcases, so it looks a little bloated (for this
>>>>> showcase) but of course you would only need those fields that are
>>>>> in the
>>>>> plugin.xml.
>>>>>
>>>>> @ExtensionInterface
>>>>> public interface IData {
>>>>>
>>>>>       @MapContent
>>>>>       String getValue();
>>>>>
>>>>>       String getText();
>>>>>
>>>>>       @MapName("required")
>>>>>       boolean getRequired();
>>>>>
>>>>>       boolean isRequired();
>>>>>
>>>>>       short getShortNumber();
>>>>>
>>>>>       int getIntegerNumber();
>>>>>
>>>>>       long getLongNumber();
>>>>>
>>>>>       float getFloatNumber();
>>>>>
>>>>>       double getDoubleNumber();
>>>>>
>>>>>       char getDelimCharacter();
>>>>>
>>>>>       byte getJustAByte();
>>>>>
>>>>>       Object createObjectType();
>>>>>
>>>>>       @MapName("data")
>>>>>       IData2 getNews();
>>>>>
>>>>>       IData3[] getMoreData();
>>>>>
>>>>>       Bundle getContributingBundle();
>>>>>
>>>>>       @MapName("objectType")
>>>>>       Class<?> getLazyThingType();
>>>>>
>>>>>       @CreateLazy()
>>>>>       @MapName("objectType")
>>>>>       ILazyThing createLazyThing();
>>>>> }
>>>>>
>>>>> A already running testcase in our Riena CVS with many more examples
>>>>> for
>>>>> different scenarios of extensions. We make use of this feature within
>>>>> Riena ourselves (aka "eat your own dogfood") so we came accross
>>>>> already
>>>>> quit some different types of extensions that we needed to consume.
>>>>>
>>>>> regards
>>>>> christian campo
>>>>>
>>>>> -----Ursprüngliche Nachricht-----
>>>>> Von: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx im Auftrag von
>>>>> Tom Schindl
>>>>> Gesendet: Di 30.09.2008 10:06
>>>>> An: E4 developer list
>>>>> Betreff: Re: [eclipse-incubator-e4-dev] Extension registry evolution-
>>>>> cross-posted from equinox-dev
>>>>>
>>>>> Hi,
>>>>>
>>>>> Well this is nice if you contribute one object but what to do if you
>>>>> want to contribute a more complex structure like:
>>>>>
>>>>> <sash class="my.ASash">
>>>>> <stack class="my.AStack">
>>>>>   <view-part label="View 1" class="my.V1"></view-part>
>>>>>   <view-part label="View 2" class="my.V1"></view-part>
>>>>> </stack>
>>>>> </sash>
>>>>>
>>>>> My current idea is still that I want to contribute such a structure
>>>>> using EMF (a special extension-point so that no-one needs to depend
>>>>> on EMF).
>>>>>
>>>>> Tom
>>>>>
>>>>> Christian Campo schrieb:
>>>>>> Hi,
>>>>>>
>>>>>> I think having IConfigurationElements mapped to actual Java
>>>>>> objects is a
>>>>>> very good idea. The Riena project is using that now for roughly 4
>>>>>> month
>>>>>> with an implementation in its codebase that allows to
>>>>>>
>>>>>> - create Java objects from Extensions
>>>>>> - define Interfaces for the ExtensionPoint schema
>>>>>> - inject the Java Objects into any object that is interested in its
>>>>>> information (making the using code independant of extensions but
>>>>>> simply
>>>>>> dependant on the interface object)
>>>>>> - automatically re-injects the Objects if extensions are added or
>>>>>> removed (by installing uninstalling bundles)
>>>>>> - create java instances for those attributes where the type is java
>>>>>>
>>>>>> Riena has defined an API that uses Extensions and OSGi Services in a
>>>>>> very similar way. You can inject Services or Extensions using one
>>>>>> API.
>>>>>> We have a short not yet complete description in the
>>>>>> wiki
>>>>> http://wiki.eclipse.org/Riena_Getting_Started_with_injecting_services_and_extensions
>>>>>
>>>>>> and of course the code is in the latest M4 build of Riena
>>>>>> (http://wiki.eclipse.org/Riena_Getting_started) and we have quite a
>>>>>> number of Testcases to show how injecting Extensions and Services
>>>>>> works
>>>>>> using the API.
>>>>>>
>>>>>> cheers
>>>>>>
>>>>>> christian campo
>>>>>>
>>>>>> Am 24.09.2008 um 21:20 schrieb Oleg Besedin:
>>>>>>
>>>>>>>
>>>>>>> [Cross-posted from the equinox-dev@xxxxxxxxxxx
>>>>>>> <mailto:equinox-dev@xxxxxxxxxxx>]
>>>>>>>
>>>>>>> What would you like to see in the extension registry 2010?
>>>>>>>
>>>>>>> If you have an opinion on how the extension registry can be
>>>>>>> improved,
>>>>>>> please visit:
>>>>>>>
>>>>>>>       http://wiki.eclipse.org/Equinox_Extension_Registry_Work
>>>>>>>
>>>>>>>       https://bugs.eclipse.org/bugs/show_bug.cgi?id=248340
>>>>>>>
>>>>>>> and leave your comments!
>>>>>>>
>>>>>>> So far we have identified several potential areas:
>>>>>>>
>>>>>>> - Create typed Java objects instead of forcing you to crawl through
>>>>>>> IConfigurationElements  (see
>>>>>>> http://wiki.eclipse.org/Equinox_Extension_Registry_Work_Objects for
>>>>>>> details)
>>>>>>> - Expand ability to programmatically modify extension registry
>>>>>>> - Add support for non-singleton bundles
>>>>>>>
>>>>>>> Does this sound like something you'd like to see in Eclipse?
>>>>>>>
>>>>>>> (Please use this mailing list for general discussions and bug / wiki
>>>>>>> for more detailed comments.)
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Oleg
>>>>>>> _______________________________________________
>>>>>>> eclipse-incubator-e4-dev mailing list
>>>>>>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>>>>>>> <mailto:eclipse-incubator-e4-dev@xxxxxxxxxxx>
>>>>>>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> eclipse-incubator-e4-dev mailing list
>>>>>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>>>>>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
>>>>>
>>>>>
>>>>> -- 
>>>>> B e s t S o l u t i o n . a t                        EDV Systemhaus
>>>>> GmbH
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> tom schindl                               leiter
>>>>> softwareentwicklung/CSO
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> eduard-bodem-gasse 8/3    A-6020 innsbruck      phone    ++43 512
>>>>> 935834
>>>>> _______________________________________________
>>>>> eclipse-incubator-e4-dev mailing list
>>>>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>>>>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> eclipse-incubator-e4-dev mailing list
>>>>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>>>>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
>>>>
>>>>
>>>> -- 
>>>> B e s t S o l u t i o n . a t                        EDV Systemhaus
>>>> GmbH
>>>> ------------------------------------------------------------------------
>>>>
>>>> tom schindl                               leiter
>>>> softwareentwicklung/CSO
>>>> ------------------------------------------------------------------------
>>>>
>>>> eduard-bodem-gasse 8/3    A-6020 innsbruck      phone    ++43 512
>>>> 935834
>>>> _______________________________________________
>>>> eclipse-incubator-e4-dev mailing list
>>>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>>>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
>>>
>>> _______________________________________________
>>> eclipse-incubator-e4-dev mailing list
>>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
>> _______________________________________________
>> eclipse-incubator-e4-dev mailing list
>> eclipse-incubator-e4-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> 
> _______________________________________________
> eclipse-incubator-e4-dev mailing list
> eclipse-incubator-e4-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev


-- 
B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
------------------------------------------------------------------------
tom schindl                               leiter softwareentwicklung/CSO
------------------------------------------------------------------------
eduard-bodem-gasse 8/3    A-6020 innsbruck      phone    ++43 512 935834


Back to the top