Based on original fileconnector-1.0.0: https://github.com/wso2/esb-connectors/tree/master/fileconnector
- decode base64 strings before saving file
- get file name while reading directory
this file connector allow's you to decode base64 strings before saving file. For example: you got binary\text or whatever file and you send this file, with or without MTOM or SwA, on WSO2ESB. In ESB logs you will see something like:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://rzrbld.ru/ns0/fakeschema/">
<soapenv:Header>
<ns0:FileName>myHelloWorld.txt</ns0:FileName>
</soapenv:Header>
<soapenv:Body>
<ns0:SaveFile>
<ns0:FileContent>SGVsbG8gd29ybGQhISE=</ns0:FileContent>
</ns0:SaveFile>
</soapenv:Body>
</soapenv:Envelope>
and you wanna store this content as decoded base64 file:
$ cat myHelloWord.txt
Hello world!!!
instead of encoded base64:
$ cat myHelloWord.txt
SGVsbG8gd29ybGQhISE=
with this file connector, this is quite simple, only thing that you need to set encoding property in <fileconnector.create> section to base64, default values like US-ASCII, UTF-8, UTF-16 is still supporting:
...
<property name="encoding" value="base64"></property>
...
<fileconnector.create>
<filelocation>{$ctx:FileLocation}</filelocation>
<file>{$ctx:FileName}</file>
<content>{$ctx:FileContent}</content>
<encoding>{$ctx:encoding}</encoding>
</fileconnector.create>
Let's say you got bunch of files in one directory and you need read them:
test_files
├── test.xml
├── test9.xml
├── testOne.xml
└── testTwo.xml
in proxy sequence you have this:
...
<fileconnector.read>
<filelocation>file:///Z:/test_files/</filelocation>
<contenttype>application/xml</contenttype>
</fileconnector.read>
...
after reading, file name will be stored in property FILE_NAME_CTX. it can be easy obtained by expression $ctx:FILE_NAME_CTX or get-property('FILE_NAME_CTX'). For example:
<log level="full">
<property name="filename" expression="$ctx:FILE_NAME_CTX"/>
</log>
meanwhile in logs
[2015-12-15 23:36:54,117] INFO - LogMediator To: /services/readFileWithName, MessageID: urn:uuid:0c9d0d78-1177-45a0-9033-6e2c3f7d4198, Direction: request, filename = file:///Z:/test_files/test.xml, Envelope:
...
- Maven 3.x
- Java 1.7 or above
- UBUNTU 13.10, Mac OSx 10., Ubuntu 15.10
- WSO2 ESB 4.9.0-ALPHA, WSO2 ESB 4.8.1
- Java 1.7, OpenJDK 7
STEPS:
-
Download ESB 4.9.0-ALPHA by navigating the following the URL: https://svn.wso2.org/repos/wso2/scratch/ESB/.
-
Copy the wso2esb-4.9.0-ALPHA.zip in to location "{ESB_Connector_Home}/repository/".
-
Please do these changes on fileconnector.xml (fileconenctor.xml file can be found from /src/test/resources/artifacts/ESB/config/proxies/fileconnector/).
-
Change the file locations with the accessible file locations.
-
Copy an 'mp4' or a large file at the location specified in <fileconnector.copylarge></fileconnector.copylarge> for copylarge method.
-
Create a file at the location specified in <fileconnector.copy></fileconnector.copy> for copy method.
-
Create at least one folder and a file at the location specified in <filelocation></filelocation> archive method.
-
-
Make sure that fileconnector is specified as a module in ESB_Connector_Parent pom.
<module>fileconnector/fileconnector-1.0.0</module>
-
Navigate to "{ESB_Connector_Home}/" and run the following command.
$ mvn clean install
licensed according to the terms of Apache License, Version 2. ( http://www.apache.org/licenses/LICENSE-2.0 )