-
Notifications
You must be signed in to change notification settings - Fork 0
Camel language server
Sergey Skorik edited this page Sep 10, 2018
·
7 revisions
- Create workspace from the Java stack with web-java-spring project.
- Enable Apache Camel language server in the Installers tab and start the workspace.
- Create "camel.xml" file with content:
<!-- here we have Spring XML file with all the namespaces here in the top of the XML file -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:cxf="http://camel.apache.org/schema/cxf"
xsi:schemaLocation="
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://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
<!-- this is Spring XML example of the Camel route in the ReportIncidentRoutes class -->
<!-- this is for demonstration purpose, to show how you can use Camel with XML DSL -->
<!-- here we define the CXF endpoint, where {{port}} refers to a placeholder so we can define the port number
in an external .properties file -->
<cxf:cxfEndpoint id="reportIncident"
address="http://localhost:{{port}}/camel-example-reportincident/webservices/incident"
wsdlURL="etc/report_incident.wsdl"
serviceClass="org.apache.camel.example.reportincident.ReportIncidentEndpoint"/>
<!-- We use a bean to make the response bean that CXF expects -->
<bean id="responseBean" class="org.apache.camel.example.reportincident.MyBean"/>
<!-- this is the bean we use to generate the dynamic file name -->
<bean id="filenameGenerator" class="org.apache.camel.example.reportincident.FilenameGenerator"/>
<!-- this CamelContext contains the equivalent route from the Java DSL, but in XML
so end users can see how to implement the route in both Java and XML -->
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<!-- property which contains port number -->
<!-- we have file:target/custom.properties which can be optional and override existing values, we use this for testing purpose -->
<camel:propertyPlaceholder id="properties" location="classpath:incident.properties,file:target/custom.properties"/>
<!-- this is the first route that uses CXF as web service -->
<route>
<from uri="tim"/>
<convertBodyTo type="org.apache.camel.example.reportincident.InputReportIncident"/>
<setHeader headerName="CamelFileName">
<method bean="filenameGenerator" method="generateFilename"/>
</setHeader>
<to uri="velocity:etc/MailBody.vm"/>
<to uri="file://target/subfolder"/>
<transform>
<method bean="responseBean" method="getOK"/>
</transform>
</route>
<!-- this is the 2nd route that pickup files and send them as emails -->
<route>
<from uri="file://target/subfolder"/>
<setHeader headerName="subject">
<constant>new incident reported</constant>
</setHeader>
<to uri="smtp://someone@localhost?password=secret&to=incident@mycompany.com"/>
</route>
</camelContext>
</beans>
- Language server initialization
- From the project open "camel.xml" file.
- Check
Finished language servers initialization, file path '/web-java-spring/camel.xml'
message in the dev-machine console.
- Autocomplete feature
- Open "camel.xml" file.
- Move to 37:21 position and invoke Ctrl + Space. Check that
timer:timerName
text fragment was added. - Hover mouse pointer on the added fragment and check that next text
The timer component is used for generating message exchanges when a timer fires.
is present. - Type
?
. Invoke codeassistant again by Ctrl + Space and select '``fixedRate''' proposal. Make sure thatfixedRate=false
fragment has been pasted properly. - Type
&
. Invoke codeassistant, selectexchangePatterninto
proposal menu. Invoke Ctrl + Space again. PasteInOnly
param. - Check that content of line 37 is
<from uri="timer:timer:timerName?fixedRate=false&exchangePattern=InOnly"/>
- Hover feature(depends on Autocomplete step)
- Open "camel.xml" file.
- Move mouse pointer on position 37:26.
- Wait hover popup is appeared with text
The timer component is used for generating message exchanges when a timer fires.
.
- Go To Symbol
- Open "camel.xml" file.
- Start Go To Symbol feature by Ctrl+F12 buttons or from Assistant menu.
- Wait for Go To Symbol form is opened with next lines:
<no id> symbols[2]
<no id>
- Click on any of them and check that it correctly selected in file.