Can't change property for file binding
tsluijter May 8, 2013 7:09 AMHello,
I'm working with SwitchYard 0.8.
I'd like to output an e-mail attachment to a file on the file system in a custom directory and the attachment filename as filename.
Therefore i've created the switchyard.xml as following
<?xml version="1.0" encoding="UTF-8"?>
<switchyard xmlns="urn:switchyard-config:switchyard:1.0" xmlns:bean="urn:switchyard-component-bean:config:1.0" xmlns:file="urn:switchyard-component-camel-file:config:1.0" xmlns:jpa="urn:switchyard-component-camel-jpa:config:1.0" xmlns:mail="urn:switchyard-component-camel-mail:config:1.0" xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="DocumentHandler" targetNamespace="urn:nl.caci:DocumentHandler:1.0">
<sca:composite name="DocumentHandler" targetNamespace="urn:nl.caci:DocumentHandler:1.0">
<sca:component name="ConsumeEmailBean">
<bean:implementation.bean class="nl.caci.document.handler.ConsumeEmailBean"/>
<sca:service name="ConsumeEmail">
<sca:interface.java interface="nl.caci.document.handler.ConsumeEmail"/>
</sca:service>
<sca:reference name="StoreFile">
<sca:interface.java interface="nl.caci.document.handler.StoreFile"/>
</sca:reference>
</sca:component>
<sca:reference name="StoreFile" multiplicity="0..1" promote="ConsumeEmailBean/StoreFile">
<sca:interface.java interface="nl.caci.document.handler.StoreFile"/>
<file:binding.file>
<file:contextMapper/>
<file:directory>${file.directory:/}</file:directory>
<file:fileName>${file.name:test.txt}</file:fileName>
<file:produce/>
</file:binding.file>
</sca:reference>
<sca:service name="ConsumeEmail" promote="ConsumeEmailBean/ConsumeEmail">
<sca:interface.java interface="nl.caci.document.handler.ConsumeEmail"/>
<mail:binding.mail>
<mail:contextMapper/>
<mail:host>mail.caci.nl</mail:host>
<mail:username>poccarfin</mail:username>
<mail:password>QAplzx12</mail:password>
<mail:consume accountType="imap">
<mail:folderName>INBOX</mail:folderName>
</mail:consume>
</mail:binding.mail>
</sca:service>
<sca:property name="file.directory" value="/temp" />
<sca:property name="file.name" value="test.docx" />
</sca:composite>
</switchyard>
I want to set the properties in the ConsumeEmailBean class
I've tried different way to set the properties (i only show the file.name as example)
@Inject
private Contect context;
@Inject
@Reference("StoreFile")
private StoreFile _storeFile
@Property("file.name")
private String fileName
public void consume(MimeMultiPart msg) {
// first try
fileName = msg.getBodyPart(i).getFileName();
// next try
System.setProperty("file.name", msg.getBodyPart(i).getFileName());
// next try
context.setProperty("file.name", msg.getBodyPart(i).getFileName());
// next try
context.setProperty("file.name", msg.getBodyPart(i).getFileName(), Scope.Exchange);
// next try
from("switchyard://StoreFile").to("file:".concat(dirname).concat("?fileName=").concat(msg.getBodyPart(i).getFileName()));
_storeFile.store(attachment);
}
Nothing seems to work.
The only thing i see, is if i used the System.setProperty the property is changed after i redeploy the project.
I've read through numerous document pages and discussions, but haven't found the answer to my problem yet.