Fuse IDE
  1. Fuse IDE
  2. ECLIPSE-774

Provide the ability to extend the IDE.

    Details

    • Type: Enhancement Enhancement
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: jboss-fuse-6.0
    • Fix Version/s: FUTURE
    • Component/s: None
    • Labels:
      None
    • Environment:
      Fuse IDE 2.1
    • Similar Issues:
      Show 5 results 

      Description

      As an outcome form our internal and external demos we have come to the conclusion that we need to extend the palate in Fuse IDE. We have been on a call with Jack Britton who requested that we log an enhancement request for this. We have built up a suite of camel processors which are essentially beans which the user puts into their routes. At the moment they have to add the bean definition to their camel context and then refer to the bean within the route, which is a little cumbersome We would would like the user to be able to drag MyCompany specific components onto the IDE canvas, without editing XML. Behind the scenes, the IDE will define the bean in the XML file, along with any properties, and also wire the bean into the route in the correct place.
      For examplle, we have a processor for "Throttler'. We could define a schema for this processor as follows:

      <category name="FuseSource Policy Processors">
      <processor>
      <name>Throttler</name>
      <icon>file:/folder/icon1.png</icon>
      <description>A Simple Throttler</description>
      <class>com.fusesource.Throttler</class>
      <properties>
      <property name="property1" required="false" type="Integer" defaultValue="property value"/> <1-- type and required are used for validation in the properties view on the front end -->
      <property name="property2"required="true" type="String" />
      <property name="property2"required="true" type="Choice" possibleValues="Value1, Value2" />
      </properties> 
      <processor>
      .....
      </category>
      <category name="FuseSource Http Processors">
      ....
      </category>
      
      

      We could then load this schema into fuse IDE, and a 'Thottler' would become available in the palette. If a user drags the 'Throttler' onto their route canvas, the bean definition for the 'Throttler' will be added to the xml, along with the bean reference within the route definition. e.g.

      <bean id="throttler" class="com.fusesource.Throttler">
      <property name="property1" value="1"/>
      <property name="property2" value="My value"/>
      <property name="property3" value="Value1"/>
      </bean>
      
      <route>
      <from uri="http://localhost"/>
      <bean ref=""throttler"/>
      </route>
      
      

        Activity

        Hide
        James Strachan
        added a comment - - edited

        FWIW this is kinda supported already. The trick though is that the camel XML file needs to contain the <bean id="throttler"> definitions (or <endpoint id="foo"/> too).

        So if you create an empty spring XML file with beans inside it and an empty camel context; then open it in Fuse IDE - the Endpoints section of the Pallette will contain all the predefined beans you wish to have. Then your users can drag and drop these onto the canvas & they don't have to mess about with the XML etc.

        All thats needed then is some eclipse action to create a 'MyCompany Camel XML' file which can include whatever pre-defined beans/endpoints. i.e. you can write a trivial eclipse plugin to add a new action/wizard to create your MyCompany Camel XML files.

        Or create an archetype that creates an entire project; with an empty camel XML inside which has the beans/endpoints you wish. Using this approach means you could have different palettes for different kinds of XML / archetype.

        Any chance you could give this a try and let us know how you like it & if there's anything else we need to do?

        BTW on the Preferences -> Fuse IDE section there's a flag so you can enable viewing IDs instead of URLs; which can be handy for giving logical names to beans/endpoints and viewing those in the designer rather than the physical middleware stuff; that could help too

        Show
        James Strachan
        added a comment - - edited FWIW this is kinda supported already. The trick though is that the camel XML file needs to contain the <bean id="throttler"> definitions (or <endpoint id="foo"/> too). So if you create an empty spring XML file with beans inside it and an empty camel context; then open it in Fuse IDE - the Endpoints section of the Pallette will contain all the predefined beans you wish to have. Then your users can drag and drop these onto the canvas & they don't have to mess about with the XML etc. All thats needed then is some eclipse action to create a 'MyCompany Camel XML' file which can include whatever pre-defined beans/endpoints. i.e. you can write a trivial eclipse plugin to add a new action/wizard to create your MyCompany Camel XML files. Or create an archetype that creates an entire project; with an empty camel XML inside which has the beans/endpoints you wish. Using this approach means you could have different palettes for different kinds of XML / archetype. Any chance you could give this a try and let us know how you like it & if there's anything else we need to do? BTW on the Preferences -> Fuse IDE section there's a flag so you can enable viewing IDs instead of URLs; which can be handy for giving logical names to beans/endpoints and viewing those in the designer rather than the physical middleware stuff; that could help too

          People

          • Assignee:
            Unassigned
            Reporter:
            Dave Stanley
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated: