Giter Club home page Giter Club logo

jbosstools-fuse's People

Contributors

apodhrad avatar apupier avatar bfitzpat avatar davsclaus avatar dependabot[bot] avatar djelinek avatar eappdev avatar fbolton avatar ffang avatar grgrzybek avatar iocanel avatar jcmurphey avatar jeffmaury avatar jkopriva avatar jooho avatar jpav avatar jstrachan avatar lburgazzoli avatar lhein avatar melissaflinn avatar nickboldt avatar pospisilf avatar punkhorn avatar rcernich avatar robstryker avatar sbouchet avatar tovacohen avatar tsedmik avatar vcornejo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jbosstools-fuse's Issues

Show Dozer auto-mapped fields

Wondering if we should provide some way to show the fields that will be auto-mapped by Dozer without any changes. This would be useful if the source and target models are very similar and the user simply needs to account for a few differences when they define mappings.

Probably a stretch goal, but worth discussing in M5.

List of expression languages should be editable drop-down

We provide some common options in the drop-down now, but there are other languages available to the user. Let's make the drop-down for language selection editable so that the user can select a predefined value or enter one on their own (e.g. groovy).

Remove <variables> element if all variables removed

  1. Add one or more variables to a mapping.
  2. Remove all variables.
  3. Run the transformation ... BOOM!

Dozer doesn't like it when you have a element with no children, so we need to add some logic that deletes this parent element if the last variable is removed.

Verify data format IDs exist on "Other" pages of New Transformation wizard

There's a strange case now with the revised New Fuse Transformation wizard on the "Other" type for source and target. If you select a Java class and enter anything in the data format ID field, it will let you to the next page or finish. Unfortunately, right now I'm not validating that the ID actually exists we need to either offer a drop-down there or at least validate the text input to make sure that the ID is good.

Dependencies missing for generated JSON model classes

Generated JSON model classes use Jackson annotations which will not necessarily be on the class path for user projects (i.e. not defined as a dependency in their pom.xml). Look into adding this capability to the project if the user selects JSON as a source/target type.

Unable to build - getting the following error

[INFO] JBoss Fuse Tooling :: Server Adapters :: Features :: Server Adapters Feature SKIPPED
[INFO] JBoss Fuse Tooling :: Update Site .................. SKIPPED
[INFO] JBoss Fuse Tooling :: Target Platform .............. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:40 min
[INFO] Finished at: 2014-09-02T12:50:26+05:30
[INFO] Final Memory: 111M/199M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.21.0:package-plugin (default-package-plugin) on project org.fusesource.ide.preferences: Execution default-package-plugin of goal org.eclipse.tycho:tycho-packaging-plugin:0.21.0:package-plugin failed: One of setGitDir or setWor
kTree must be called. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.21.0:package-plugin (default-package-plugin) on project org.fusesource.ide.preferences: Execution default-package-plugin of goal org.eclipse.tycho:tycho-packaging-plugin:0.21.0:p
ackage-plugin failed: One of setGitDir or setWorkTree must be called.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-package-plugin of goal org.eclipse.tycho:tycho-packaging-plugin:0.21.0:package-plugin failed: One of setGitDir or setWorkTree must be called.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:143)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: java.lang.IllegalArgumentException: One of setGitDir or setWorkTree must be called.
at org.eclipse.jgit.lib.BaseRepositoryBuilder.requireGitDirOrWorkTree(BaseRepositoryBuilder.java:582)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.setup(BaseRepositoryBuilder.java:550)
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.build(FileRepositoryBuilder.java:92)
at org.eclipse.tycho.extras.sourceref.jgit.JGitSourceReferencesProvider.getSourceReferencesHeader(JGitSourceReferencesProvider.java:41)
at org.eclipse.tycho.packaging.sourceref.SourceReferenceComputer.addSourceReferenceHeader(SourceReferenceComputer.java:50)
at org.eclipse.tycho.packaging.PackagePluginMojo.updateManifest(PackagePluginMojo.java:253)
at org.eclipse.tycho.packaging.PackagePluginMojo.createPluginJar(PackagePluginMojo.java:210)
at org.eclipse.tycho.packaging.PackagePluginMojo.execute(PackagePluginMojo.java:138)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
... 20 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :org.fusesource.ide.preferences

Failure to find org.fusesource:fuse-project:pom:1.0.0.redhat-312

Just downloaded the source but is failing with:

[ERROR] The project org.fusesource.ide:project:7.2.0-SNAPSHOT (I:\fuseide\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find org.fusesource:fuse-project:pom:1.0.0.redhat-312 in http://repo.fusesource.com/nexus/content/g
roups/m2-release-proxy was cached in the local repository, resolution will not be reattempted until the update interval of release-proxy.fusesource.o
rg has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 15, column 11 -> [Help 2]

[Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

Select element for XML where multiple types are available

For XML source and target types, we need to prompt the user to select the actual element they want to use because there's no way to change this after the map is created. There are a couple scenarios here:

  • User provides a schema with multiple top-level element definitions. We currently choose one with a guess, but we really need the user to tell us which top-level element they are mapping.
  • User provides XML instance document where a schema is generated. There will only be one top-level type, which makes this easier than the schema case, but there will still be multiple classes generated so we need to choose the right one.

For both cases, we need to do a few things:

  • On the XML page, we need to allow the user to select the element they care about and stash this selection for performFinish later in the wizard. If there's only one eligible option (i.e. one top-level element), then we can auto-select the element name for the user.
  • In performFinish, we need to look at the generated JCodeModel and grab the names of all classes with an @XmlRootElement annotation. The element name is available in that annotation, so we can build a map of element names to Java types. Look the element name up in the map created above and select the Java type that corresponds to it for the transformation enpdoint.

NPE in OtherPage of New Transformation Wizard

This one is a bit odd. I was testing the New Transformation Wizard standalone (not through the palette extension) and when I first select it in the list of wizards when I choose File -> New -> Other -> Fuse Transformation and click Next, the following shows up in the Error Log:

java.lang.NullPointerException
    at org.jboss.tools.fuse.transformation.editor.internal.wizards.OtherPage.bindControls(OtherPage.java:253)
    at org.jboss.tools.fuse.transformation.editor.internal.wizards.OtherPage.createPage(OtherPage.java:214)
    at org.jboss.tools.fuse.transformation.editor.internal.wizards.OtherPage.access$0(OtherPage.java:127)
    at org.jboss.tools.fuse.transformation.editor.internal.wizards.OtherPage$1.run(OtherPage.java:118)
    at org.eclipse.core.databinding.observable.ObservableTracker.runAndCollect(ObservableTracker.java:150)
    at org.eclipse.core.databinding.ObservablesManager.runAndCollect(ObservablesManager.java:103)
    at org.jboss.tools.fuse.transformation.editor.internal.wizards.OtherPage.createControl(OtherPage.java:114)
    at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:178)

install JBoss Fuse Tooling in eclipse luna gives errors

I tried to install the plugins into eclipse luna but failed.

I downloaded the "Eclipse IDE for Java EE Developers" 64-bit on a windows 8.1 as well as a windows 7 64-bit machine.
I installed the all plugins from http://download.jboss.org/jbosstools/updates/integration/luna/integration-stack/fuse-tooling/7.3.0/all/repo/ and after some time I get:
Cannot complete the install because one or more required items could not be found.
Software being installed: JBoss Fuse Tooling Server Adapters Developer Resources 7.3.0.v20150320-1714-H395-MASTER (org.fusesource.ide.server.extensions.feature.source.feature.group 7.3.0.v20150320-1714-H395-MASTER)
Missing requirement: JBoss Fuse Tooling Server Adapters 7.3.0.v20150320-1714-H395-MASTER (org.fusesource.ide.server.extensions.feature.feature.group 7.3.0.v20150320-1714-H395-MASTER) requires 'org.jboss.ide.eclipse.as.wtp.core 3.0.0' but it could not be found
Cannot satisfy dependency:
From: JBoss Fuse Tooling Server Adapters Developer Resources 7.3.0.v20150320-1714-H395-MASTER (org.fusesource.ide.server.extensions.feature.source.feature.group 7.3.0.v20150320-1714-H395-MASTER)
To: org.fusesource.ide.server.extensions.feature.feature.group [7.3.0.v20150320-1714-H395-MASTER]

I don't get this error if I first install the "JBoss Tools (Luna) 4.2.2 final" from the eclipse marketplace.

Is this normal behavior?

Finish should be disabled on wizard completion

The finish option should be idempotent within the new transformation wizard. Right now, you can click the Finish button multiple times and the editor seems to get into a weird state as a result. Can we disable the Finish button once it's clicked?

FuseIDE in combination with routeContext elements from external files

Hello,

I started about a half year ago using Camel in combination ActiveMQ and I feel good with this esb solution. I created all xml files and related files using an xml or text editor. I would like to switch to a more visual editor and I came across the FuseIDE. Everthing seems to work fine except for my sub-routes. I use the routeContext functionality as sub-routes in the main route file. A sub-routes are predefined reusable routes which, dependable on the customer, are included or not (in the main file). I already have a collection of sub-routes which is extending every week.

I found the same issue in eclipse-344 (http://fusesource.com/forums/thread.jspa?messageID=17641) but it should have solved quite some time ago. I am very confused about the version information for the FuseIDE product. Eclipse-344 indicates that this issue is solved in version 2.1.0 but I can't find this version number anywhere. I download the FuseIDE as part of the jboss fuse page and this gives me a download file FuseIDE-6.0.0.129-win32.win32.x86_64.zip. A see here a version 6.0.0.129 and zip contains a folder FuseIDE-6.0.0.
The "About FuseIDE" window (in eclipse) shows a version 7.6.2 (but I think this is the eclipse.exe version).

Can someone please clear out this version confusion? Can someone tell me why my sub-route design windows is blank when I open it?

Kind regards,
Ronny Aerts โ€“ Intris nv โ€“ Wapenstilstandlaan 47, 2600 Berchem, Belgium
R&D Integration Architect
Prince II certified
Tel: +32-3-326.50.75

Add variables support to editor

Literals have been replaced by Variables, so we need to update the UI to reflect some changes:

  • In the variables list, provide an option to view the variable value (maybe as a filter?)
  • When creating a variable allow the variable name to be used as the variable value as a convenience. We can either copy the input or provide a checkbox or button to make them the same in the dialog.
  • Allow the user to change the value of a variable. Changing the name is a bit trickier as we would have to update that name everywhere it's used. We can either add an option to do that for the user or just limit updates to the value and the user will have to delete/add the mapping to change the name.
  • When the user attempts to remove a variable, check to see if it's used and warn the user if it's being used in any mappings.

route xml comment gets converted to description tag

I have a very simple route which contains some xml content. The FuseIDE in source mode shows:

        <route id="test-log">
            <from uri="timer://ontime?repeatCount=1"/>
<!--            <log message="test" /> -->
            <log message="${routeId} end of route" />
        </route>

When a switch to design mode and back (without changing anything), my route is converted and the xml content is changed to a description tag.

    <route customId="true" id="test-log">
        <from uri="timer://ontime?repeatCount=1"/>
        <log message="${routeId} end of route">
            <description>&lt;log message="test" /&gt;</description>
        </log>
    </route>

Is this intended behaviour or is this a bug? I would like to keep my xml comment as is.

Updating variable mapping doesn't work

  1. Create two variables, VAR1 and VAR2.
  2. Map VAR1 and VAR2 to two separate output fields.
  3. Drag VAR2 over the VAR1 mapping to update it to use VAR2 instead.
  4. Close the editor.
  5. Reopen the editor and notice that the updated mapping is completely gone.

Same behavior if I use Set Variable in the detail view for step 3.

No stack trace or error from what I can see.

build FuseIDE from source complains for Tycho 0.16.0.CR2

The main pom.xml has a variable tycho-version with contain "0.18.1" and another jboss-tycho-version with content "0.16.0.CR2". The maven "mvn clean install -Dmaven.test.skip=true" produces a "The POM for org.jboss.tools.tycho-plugins:repository-utils:jar:0.16.0.CR2 is missing" error on this.
The version Tycho version 0.16.0 does not seem to be online available anymore.

Can someone please update the main pom so I can execute a build FuseIDE from source?

Palette is missing some components from camel-core

The following components from camel-core are not represented in the palette:

  • beanclass
  • binding
  • browse
  • controlbus
  • dataformat
  • dataset
  • direct
  • directvm
  • log
  • mock
  • properties
  • ref
  • scheduler
  • seda
  • stub
  • test
  • timer
  • validator
  • vm
  • xslt

New Transformation Test wizard should prompt for Camel configuration

Allow the Camel Context to be selected in the wizard. Right now, if the actual Camel configuration is not selected in the project explorer, the list of endpoints is not populated. So this will address that issue and the case where the user has multiple Camel configs in their project.

Set JSON resource type based on selection in new transform wizard

It's too easy to make a mistake on the JSON page of the wizard w/r/t the type of JSON resource definition being used (schema vs. instance document). The page defaults to schema but the filter needs to match all .json files, so the user can select an instance document by accident (or this is what they intend, but they did not select the instance radio button). Right now, a mismatch results in really bizarre errors when the wizard completes. It would be better if we set the radio button state based on the type of JSON file selected. We used to have code that did this in the old wizard, so we just need to apply the same logic on the JSON page and the radio buttons.

  1. User clicks browse button and selects JSON file.
  2. We look at JSON file content and determine if it's a schema.
  3. If it's a schema, set radio button to schema, else set radio button to instance document.

camel context won't run without tests in eclipse kepler

I updated my fuseide source files from github (commit of 26/06/2014 16:31:06), builded the complete project and updated the plugins in kepler so I have pom version 7.3.0-SNAPSHOT.

My camel context run fine when run with tests but fail without tests with following error:
[INFO] Starting Camel ...
2014-03-31 15:42:59.853 [INFO ] [org.apache.camel.main.MainSupport] Apache Camel 2.12.3 starting
2014-03-31 15:42:59.946 [INFO ] [org.springframework.context.support.ClassPathXmlApplicationContext] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4c9d7b55: startup date [Mon Mar 31 15:42:59 CEST 2014]; root of context hierarchy
2014-03-31 15:43:00.017 [INFO ] [org.apache.camel.main.MainSupport] Apache Camel 2.12.3 stopping
[ERROR] *************************************
[ERROR] Error occurred while running main from: org.apache.camel.spring.Main
[ERROR]
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:487)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Could not resolve bean definition resource pattern [META-INF/spring/.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/spring/] cannot be resolved to URL because it does not exist
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:221)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93)
at org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:186)
at org.apache.camel.spring.Main.doStart(Main.java:140)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.main.MainSupport.run(MainSupport.java:148)
at org.apache.camel.main.MainSupport.run(MainSupport.java:352)
at org.apache.camel.spring.Main.main(Main.java:73)
... 6 more
Caused by: java.io.FileNotFoundException: class path resource [META-INF/spring/] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:177)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.isJarResource(PathMatchingResourcePatternResolver.java:411)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:340)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:279)
at org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1269)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:208)
... 21 more
[ERROR] *
***********************************
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

I manually created an empty src/main/resources/META-INF/spring folder but this does not help. The META-INF/spring folder does not seem to be created in my target.

I have a "war" project and use the java 7 jdk to build.

SAP Libraries Import Wizard throws exception when deploying bundles

Wizard throws following exception when deploying bundles though deployment succeeds:

java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.core.internal.databinding.beans.BeanPropertyHelper.writeProperty(BeanPropertyHelper.java:59)
at org.eclipse.core.internal.databinding.beans.BeanValueProperty.doSetValue(BeanValueProperty.java:51)
at org.eclipse.core.databinding.property.value.ValueProperty.setValue(ValueProperty.java:83)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue.doSetValue(SimplePropertyObservableValue.java:104)
at org.eclipse.core.databinding.observable.value.AbstractObservableValue.setValue(AbstractObservableValue.java:55)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.setValue(DecoratingObservableValue.java:103)
at org.eclipse.core.databinding.UpdateValueStrategy.doSet(UpdateValueStrategy.java:486)
at org.eclipse.core.databinding.ValueBinding$4.run(ValueBinding.java:197)
at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:148)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:152)
at org.eclipse.core.databinding.observable.Realm.exec(Realm.java:170)
at org.eclipse.core.databinding.ValueBinding$3.run(ValueBinding.java:188)
at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:148)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:152)
at org.eclipse.core.databinding.observable.Realm.exec(Realm.java:170)
at org.eclipse.core.databinding.ValueBinding.doUpdate(ValueBinding.java:151)
at org.eclipse.core.databinding.ValueBinding.access$4(ValueBinding.java:140)
at org.eclipse.core.databinding.ValueBinding$1.handleValueChange(ValueBinding.java:45)
at org.eclipse.core.databinding.observable.value.ValueChangeEvent.dispatch(ValueChangeEvent.java:62)
at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:119)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.fireValueChange(DecoratingObservableValue.java:55)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.handleValueChange(DecoratingObservableValue.java:93)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue$1.handleValueChange(DecoratingObservableValue.java:67)
at org.eclipse.core.databinding.observable.value.ValueChangeEvent.dispatch(ValueChangeEvent.java:62)
at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:119)
at org.eclipse.core.databinding.observable.value.AbstractObservableValue.fireValueChange(AbstractObservableValue.java:71)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue.notifyIfChanged(SimplePropertyObservableValue.java:120)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue.access$1(SimplePropertyObservableValue.java:112)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue$2.run(SimplePropertyObservableValue.java:66)
at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:148)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:152)
at org.eclipse.core.databinding.observable.Realm.exec(Realm.java:170)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue$1.handleEvent(SimplePropertyObservableValue.java:63)
at org.eclipse.core.databinding.property.NativePropertyListener.fireChange(NativePropertyListener.java:63)
at org.eclipse.jface.internal.databinding.swt.WidgetListener.handleEvent(WidgetListener.java:55)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4166)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1489)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1470)
at org.eclipse.swt.widgets.Text.setText(Text.java:2106)
at org.fusesource.ide.sap.imports.IDoc3ArchiveSelectionPage.getJCo3ArchiveFile(IDoc3ArchiveSelectionPage.java:155)
at org.fusesource.ide.sap.imports.IDoc3ArchiveSelectionPage$1.widgetSelected(IDoc3ArchiveSelectionPage.java:112)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4166)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1489)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1474)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4012)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3651)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:826)
at org.eclipse.jface.window.Window.open(Window.java:802)
at org.eclipse.ui.internal.handlers.WizardHandler$Import.executeHandler(WizardHandler.java:152)
at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:279)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:243)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:224)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:167)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:420)
at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4166)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1489)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1474)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4012)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3651)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

unable to build fuseide help plugin with java jdk 1.7-75 and maven 3.2.5

I upgraded my java to the lastest jdk 1.7-75 and maven to 3.2.5 version. I cloned the git repository to a local drive and executed a "mvn clean package -Dmaven.test.skip=true" command.
This gives and error on the Help plugin and the rest of the build is skipped.
[INFO] JBoss Fuse Tooling :: Core :: Plugins :: Help ...... FAILURE [ 19.401 s]

I also see:
[WARNING] Error injecting: org.apache.maven.plugin.antrun.AntRunMojo
java.lang.NoClassDefFoundError: org/apache/tools/ant/BuildException
...
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.BuildException
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:17 min
[INFO] Finished at: 2015-03-06T16:34:36+01:00
[INFO] Final Memory: 165M/655M

API should allow for edits to existing operations

To change a mapping operation with the common API, you have to delete and re-add it, which is kinda dumb. We should support basic edits which don't have side effects (e.g. requiring a new class mapping). Some examples:

  • Change the language and/or expression text for an expression mapping
  • Change the variable name used as the source of a variable mapping
  • Change the class name and/or method used in a custom mapping

from endpoint get's duplicated

Opening an existing route duplicates the from endpoint when Switching between design and source view.
Fuse Ide version : 7.1.27

Route example before opening in Fuse Ide ->

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" 
xmlns:cxf="http://camel.apache.org/schema/cxf"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:property-placeholder location="file:${drip_home}/ppg-corrections-out/conf/adapter.properties" ignore-resource-not-found="false"/>

<cxf:cxfEndpoint id="programCorrectionsService" address="${serviceAddress}"
    serviceName="tns:ProgramCorrectionsNotesReportService" endpointName="tns:ProgramCorrectionsNotesReportPortSoap11"
    xmlns:tns="http://www.dr.dk/ppg/v1/definitions" wsdlURL="wsdl/ProgramCorrectionsNotesReport-v1.wsdl">
    <cxf:properties>
        <entry key="dataFormat" value="PAYLOAD" />
    </cxf:properties>
</cxf:cxfEndpoint>

<camelContext id="ppg-corrections-out-Context" handleFault="true" xmlns="http://camel.apache.org/schema/spring">
    <endpoint id="ppgTransformation" uri="xslt:file:${drip_home}/ppg-corrections-out/conf/wocorrections2ppg.xsl"/>  

    <route id="ppg-corrections-out-Route">
        <from uri="hubQueue:queue:PROGRAM_CORRECTIONS_HUB" />
        <transacted />
        <to ref="ppgTransformation"/>
        <to uri="direct:audit"/>
        <inOut id="ws" uri="cxf:bean:programCorrectionsService?synchronous=true" />
    </route>

    <route id="audit">
        <from uri="direct:audit"/>
        <setHeader headerName="adapterName"><constant>ppg-corrections-out</constant></setHeader>
        <to uri="hubQueue:queue:AUDIT_HUB"/>
    </route>
</camelContext>

<!-- set up jee jta transactionmanager delegation -->
<tx:jta-transaction-manager />

<!-- look up the datasource using JNDI in app-server -->
<jee:jndi-lookup id="hubXADataSource" jndi-name="jdbc/hubXADataSource" />

<!-- set up Oracle AQ connection factory -->
<bean id="hubAqQueueConnectionFactory" class="dk.dr.drip.aq.OracleAQQueueConnectionFactory">
    <property name="dataSource" ref="hubXADataSource" />
</bean>

<!-- set up camel jms to use Oracle AQ connectionfactory and make it transactional -->
<bean id="hubQueue" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory">
        <bean factory-bean="hubAqQueueConnectionFactory" factory-method="createConnectionFactory" />
    </property>
    <property name="transacted" value="true" />
    <property name="transactionManager" ref="transactionManager" />
</bean>

<!-- Override Camels defalut timeout on shutdown and set it to 30 seconds -->
<bean class="org.apache.camel.impl.DefaultShutdownStrategy">
    <property name="timeout" value="30"/>
    <property name="timeUnit" value="SECONDS"/>
</bean>

Change models in mappings to have the same parentage as those created within the config source/target models

This was originally filed by John V in the data-mapper repository. Moving it over to fuside.

The addition of tying models to mappings helps, but I need this last piece to effectively provide highlighting of associated source and target elements in the model viewers when a mapping is selected. The problem now is, for instance, the model for Items in the ABCOrder model has no parent in the mapping, whereas it has an appropriate parent in the corresponding model under the config's source model.

Use Fuse commons model support for Spring and Blueprint config

If you try to use the New Transformation wizard in an open Blueprint Camel file, I'm seeing this exception thrown at org.jboss.mapper.camel.CamelConfigBuilder.getJAXBContext(CamelConfigBuilder.java:247)

'''
!ENTRY org.eclipse.ui 4 0 2015-03-26 13:27:21.409
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NoClassDefFoundError: org/osgi/service/blueprint/container/BlueprintListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:272)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:632)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:588)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:540)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:527)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2499)
at java.lang.Class.getDeclaredFields(Class.java:1811)
at com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getDeclaredFields(ReflectionNavigator.java:279)
at com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getDeclaredFields(ReflectionNavigator.java:62)
at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findFieldProperties(ClassInfoImpl.java:380)
at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:311)
at com.sun.xml.bind.v2.model.impl.RuntimeClassInfoImpl.getProperties(RuntimeClassInfoImpl.java:186)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:248)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:104)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:85)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:214)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:99)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:85)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:320)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:335)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:465)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:303)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:142)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1174)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:162)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:248)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:235)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:432)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at org.jboss.mapper.camel.CamelConfigBuilder.getJAXBContext(CamelConfigBuilder.java:247)
at org.jboss.mapper.camel.CamelBlueprintBuilder.(CamelBlueprintBuilder.java:46)
at org.jboss.mapper.camel.CamelConfigBuilder.loadConfig(CamelConfigBuilder.java:69)
at org.jboss.tools.fuse.transformation.editor.internal.wizards.Model.setProject(Model.java:180)
at org.jboss.tools.fuse.transformation.editor.internal.wizards.Model.setCamelFilePath(Model.java:148)
at org.jboss.tools.fuse.transformation.editor.wizards.NewTransformationWizard.setCamelFilePath(NewTransformationWizard.java:238)
at org.jboss.tools.fuse.transformation.extensions.DataTransformationPaletteEntry$DataMapperEndpointFigureFeature.createNode(DataTransformationPaletteEntry.java:188)
at org.jboss.tools.fuse.transformation.extensions.DataTransformationPaletteEntry$DataMapperEndpointFigureFeature.create(DataTransformationPaletteEntry.java:127)
at org.eclipse.graphiti.features.impl.AbstractCreateFeature.execute(AbstractCreateFeature.java:100)
at org.eclipse.graphiti.internal.command.GenericFeatureCommandWithContext.execute(GenericFeatureCommandWithContext.java:64)
at org.eclipse.graphiti.internal.command.GFPreparableCommand.doExecute(GFPreparableCommand.java:37)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:115)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
at org.eclipse.graphiti.internal.command.CommandExec.executeCommand(CommandExec.java:85)
at org.eclipse.graphiti.ui.internal.command.CreateModelObjectCommand.execute(CreateModelObjectCommand.java:55)
at org.eclipse.graphiti.ui.internal.editor.EmfOnGefCommand.execute(EmfOnGefCommand.java:54)
at org.eclipse.graphiti.internal.command.GFPreparableCommand2.doExecute(GFPreparableCommand2.java:43)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513)
at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:84)
at org.eclipse.graphiti.ui.internal.editor.GFCommandStack.execute(GFCommandStack.java:138)
at org.eclipse.gef.tools.AbstractTool.executeCommand(AbstractTool.java:425)
at org.eclipse.gef.tools.AbstractTool.executeCurrentCommand(AbstractTool.java:438)
at org.eclipse.gef.tools.CreationTool.performCreation(CreationTool.java:269)
at org.eclipse.gef.tools.CreationTool.handleButtonUp(CreationTool.java:189)
at org.eclipse.gef.tools.AbstractTool.mouseUp(AbstractTool.java:1200)
at org.eclipse.gef.EditDomain.mouseUp(EditDomain.java:301)
at org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchMouseReleased(DomainEventDispatcher.java:380)
at org.eclipse.draw2d.LightweightSystem$EventHandler.mouseUp(LightweightSystem.java:548)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:220)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.ClassNotFoundException: org.osgi.service.blueprint.container.BlueprintListener cannot be found by org.fusesource.ide.commons_7.3.0.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 106 more
'''

minor issues with new expression support

Found a few issues in the fix for 149. They're all minor, so just lumping them into one GH issue:

  • In the UI, expression text is shown surrounded by "{ }". This is part of the syntax of various languages within Camel (including simple), which will be confusing. We should not display extra "{ }" to what the user enters.
  • Escaping "${" is missing in this commit. See my comment on the original issue:
    #149
  • Some expressions could be very long, so viewing the expression text in the source node could be trouble. Perhaps we should consider having a unique icon/colored box for expressions and just the expression language in there? We can always provide a mini-viewer of some support in the detail view.
  • There's a bug when using an expression in combination with the new "Add a new mapping" support, to reproduce:
    • Click Add a new mapping
    • Set an expression as the source
    • Set a field as the target
    • Boom ...
java.lang.ClassCastException: org.jboss.tools.fuse.transformation.editor.internal.util.ExpressionPlaceholder cannot be cast to org.jboss.mapper.Variable
    at org.jboss.tools.fuse.transformation.editor.internal.util.TransformationConfig.update(TransformationConfig.java:497)
    at org.jboss.tools.fuse.transformation.editor.internal.util.TransformationConfig.setTarget(TransformationConfig.java:452)
    at org.jboss.tools.fuse.transformation.editor.internal.MappingViewer.dropOnTarget(MappingViewer.java:91)
    at org.jboss.tools.fuse.transformation.editor.internal.MappingViewer$2.drop(MappingViewer.java:74)
    at org.jboss.tools.fuse.transformation.editor.internal.MappingViewer$DropListener.drop(MappingViewer.java:174)

Add expression mapping support to transformation editor

Allow the user to define an expression which is mapped to a target field. The general flow would go something like:

  • Add new mapping (source and target are empty initially).
  • Select expression as the source type in the mappings list entry (via decorator on source field, for example)
  • Prompt user for two pieces of information:
    • Expression language (drop-down list populated with some entries, but allow for free-text entry as well)
    • Expression (text that the user enters, so this should be a text area vs. a basic input box)
  • User then drags a target field from the target model viewer to complete the mapping

One interesting challenge in the above is when you actually save the config. You can't save the mapping until you have the expression info and the target field mapping defined, but the user could go off an start another mapping with the expression mapping half-complete. I think we simply save when the mapping is complete and if the user closes the editor with half-completed mappings then they are simply discarded. Coding around this case will likely take some care.

Here's the initial set of languages that we can populate in the drop-down for expression languages:

  • constant
  • header
  • exchangeProperty
  • simple

Support for Maps as source/target

Special case of Java source/target is a map of key/value pairs. Dozer supports it and it's useful for cases in Camel where data is natively returned as a Map (e.g. database bindings). Figure out how this should look in the editor and map to Dozer config.

Allow data formats to be specified instead of model definitions in new transformation wizard

While we only support model generation for XML and JSON today, users should still be able to create transformations for types where they have generated the necessary models and data format configuration outside of the tooling. One example would be CSV. We don't support model generation for CSV input today, but if a user created their own Java model and added a data format to their Camel config, then the editor and runtime can still be used to configure the mapping.

To address this, we need to allow for an alternative input for the source and target model definitions in the new transformation wizard. The user should have a choice between selecting a model definition (XML, XSD, JSON, etc.) or an existing model class and data format ID.

Unable to delete mappings when Set Field used

  1. Create an empty mapping.
  2. In the detail view, use the drop-down menu "Set Field" to select the source and target fields.
  3. Try to remove the new mapping ... BOOM!

Error message is "Widget is disposed". Stack trace:

org.eclipse.swt.SWTException: Widget is disposed
    at org.eclipse.swt.SWT.error(SWT.java:4441)
    at org.eclipse.swt.SWT.error(SWT.java:4356)
    at org.eclipse.swt.SWT.error(SWT.java:4327)
    at org.eclipse.swt.widgets.Widget.error(Widget.java:783)
    at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:573)
    at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:1753)
    at org.eclipse.jface.viewers.TreeViewer.getSelection(TreeViewer.java:232)
    at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:311)
    at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2547)
    at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2974)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1443)
    at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:366)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1397)
    at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1497)
    at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:521)
    at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1456)
    at org.jboss.tools.fuse.transformation.editor.internal.ModelViewer$9.propertyChange(ModelViewer.java:264)
    at org.jboss.tools.fuse.transformation.editor.internal.util.TransformationConfig.fireEvent(TransformationConfig.java:155)
    at org.jboss.tools.fuse.transformation.editor.internal.util.TransformationConfig.mapField(TransformationConfig.java:287)
    at org.jboss.tools.fuse.transformation.editor.TransformationEditor$TargetModelTabFolder$1TargetModelViewer$1.performDrop(TransformationEditor.java:352)
    at org.eclipse.jface.viewers.ViewerDropAdapter.drop(ViewerDropAdapter.java:254)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.