[
https://issues.apache.org/jira/browse/CAMEL-13993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16932458#comment-16932458
]
KOMMI KISHORE commented on CAMEL-13993:
---------------------------------------
[~acosentino] Thank you.
{color:#000080}public class {color}SMBTestConnector {
{color:#000080}static {color}StringBuilder {color:#660e7a}fileName {color}=
{color:#000080}new
{color}StringBuilder({color:#008000}"smb://MY_SMB_PATH{color}{color:#008000}?idempotent=true&noop=true"{color});
{color:#000080}static {color}DefaultCamelContext {color:#660e7a}camelContext
{color}= {color:#000080}null{color};
{color:#000080}public static void {color}main(String args[]) {
{color:#000080}try{color}{
String proxyPw = GetPasswordDialog.getPassword({color:#008000}"MY USER
NAME{color}{color:#008000}"{color});
{color:#808080}fileName.append("&username=").append(proxyUser);
{color}
{color:#660e7a}fileName{color}.append({color:#008000}"&password="{color}).append(proxyPw);
{color:#000080}final {color}CsvDataFormat format = createCsvDataFormatter();
{color:#660e7a}camelContext {color}= {color:#000080}new
{color}DefaultCamelContext();
{color:#660e7a}camelContext{color}.addRoutes({color:#000080}new
{color}RouteBuilder() {
{color:#808000}@Override
{color} {color:#000080}public void {color}configure() {color:#000080}throws
{color}Exception {
from({color:#008000}"direct:start"{color})
.routeId({color:#008000}"start"{color})
.process(receiveFile()){color:#808080}
{color} .convertBodyTo(String.{color:#000080}class{color},
{color:#008000}"UTF-8"{color})
.unmarshal({color:#660e7a}format{color})
.process(buildCsv())
.to({color:#008000}"file://xlsx_test/?fileName=Test.csv"{color})
;
}
});
{color:#660e7a}camelContext{color}.start();
ProducerTemplate template =
{color:#660e7a}camelContext{color}.createProducerTemplate();
template.sendBody({color:#008000}"direct:start"{color},
{color:#000080}null{color});
Thread.sleep({color:#0000ff}5000{color});
{color:#660e7a}camelContext{color}.stop();
}{color:#000080}catch {color}(Exception e){
e.printStackTrace();
}{color:#000080}finally {color}{
{color:#000080}try{color}{
{color:#660e7a}camelContext{color}.stop();
}{color:#000080}catch {color}(Exception e){
}
}
}
{color:#000080}private static {color}Processor buildCsv() {
{color:#000080}return new {color}Processor() {
{color:#808000}@Override
{color} {color:#000080}public void {color}process(Exchange exchange)
{color:#000080}throws {color}Exception {
System.{color:#660e7a}out{color}.println({color:#008000}"Started data
processing..."{color});
{color:#000080}final char {color}delim = {color:#008000}';'{color};
{color:#000080}final char {color}text = {color:#008000}'"'{color};
{color:#000080}final char {color}textReplace =
{color:#008000}'{color}{color:#000080}\'{color}{color:#008000}'{color};
StringBuilder sb = {color:#000080}new {color}StringBuilder();
Set<String> headerSet = {color:#000080}new {color}HashSet<>();
List<Object> dataList = (List<Object>)exchange.getIn().getBody();
{color:#000080}if{color}(!dataList.isEmpty()){
{color:#000080}for {color}(Object dataObj : dataList) {
Map<?,?> row = (Map<?,?>)dataObj;
{color:#000080}for {color}(Object k : row.keySet()) {
headerSet.add(k.toString());
}
}
List<String> headerList = {color:#000080}new {color}ArrayList<>();
headerList.addAll(headerSet);
Collections.sort(headerList);
{color:#000080}for {color}(String header : headerList) {
sb.append(text);
sb.append(header);
sb.append(text);
sb.append(delim);
}
sb.append({color:#008000}"{color}{color:#000080}\r\n{color}{color:#008000}"{color});
{color:#000080}for {color}(Object arr : dataList) {
Map row = (Map)arr;
{color:#000080}for {color}(String header:headerList) {
String val =
{color:#008000}""{color}+(row.containsKey(header)?row.get(header):{color:#008000}""{color});
sb.append(text);
val = val.replace(text, textReplace);
sb.append(val);
sb.append(text);
sb.append(delim);
}
sb.append({color:#008000}"{color}{color:#000080}\r\n{color}{color:#008000}"{color});
}
}
exchange.getIn().setBody(sb.toString());
}
};
}
{color:#000080}private static {color}CsvDataFormat createCsvDataFormatter()
{color:#000080}throws {color}Exception {
CsvDataFormat format = {color:#000080}new {color}CsvDataFormat();
format.setUseMaps({color:#000080}true{color});
{color:#000080}final {color}String delimiterValue = {color:#008000}";"{color};
{color:#000080}final char {color}delimiter = delimiterValue.isEmpty() ?
{color:#008000}';' {color}: delimiterValue.charAt({color:#0000ff}0{color});
format.setDelimiter(delimiter);
{color:#000080}final boolean {color}skipHeaderRecord =
{color:#000080}true{color};
format.setSkipHeaderRecord(skipHeaderRecord);
}
{color:#000080}return {color}format;
}
{color:#000080}private static {color}Processor receiveFile() {
{color:#000080}return new {color}Processor() {
{color:#808000}@Override
{color} {color:#000080}public void {color}process(Exchange exchange)
{color:#000080}throws {color}Exception {
Message msg = exchange.getIn();
String endpointUri = {color:#660e7a}fileName{color}.toString();
{color:#000080}int {color}waitTimeout = {color:#0000ff}15000{color};
Message fileMessage = pollingConsumerReceiveOnce(endpointUri, waitTimeout);
{color:#808080}//copy file metadata headers to message
{color} {color:#000080}for {color}(Entry<String,Object> header :
fileMessage.getHeaders().entrySet()) {
msg.getHeaders().putIfAbsent(header.getKey(), header.getValue());
};
{color:#808080}//read file using configured encoding
{color} InputStream is =
fileMessage.getBody(InputStream.{color:#000080}class{color});
String inFileEncoding = {color:#008000}"UTF-8"{color};
String fileContents = IOUtils.toString(is,inFileEncoding);
is.close();
msg.setBody(fileContents);
}
};
}
{color:#000080}private static {color}Message pollingConsumerReceiveOnce(String
endpointUri, {color:#000080}int {color}waitTimeout) {color:#000080}throws
{color}Exception {
Endpoint endpoint =
{color:#660e7a}camelContext{color}.getEndpoint(endpointUri);
SedaPollingConsumer consumer = {color:#000080}new
{color}SedaPollingConsumer(endpoint);
{color:#000080}try {color}{
consumer.start();
Exchange fileExchange = consumer.receive(waitTimeout);
{color:#000080}if {color}(fileExchange == {color:#000080}null{color}) {
{color:#000080}throw new {color}Exception({color:#008000}"No message could be
recieved from endpoint (if it is a file endpoint, expected file may not be
present) : " {color}+ endpoint);
}
System.{color:#660e7a}out{color}.println({color:#008000}"After Date
:"{color}+{color:#000080}new {color}Date());
{color:#000080}return {color}fileExchange.getIn();
} {color:#000080}finally {color}{
consumer.stop();
{color:#660e7a}camelContext{color}.removeEndpoint(endpoint);
}
}
}
> SMB Connection from Polling consumer
> ------------------------------------
>
> Key: CAMEL-13993
> URL: https://issues.apache.org/jira/browse/CAMEL-13993
> Project: Camel
> Issue Type: Bug
> Affects Versions: 2.22.1
> Reporter: KOMMI KISHORE
> Priority: Major
>
> I am trying to connect SMB server with PollingConsumer, but is it not
> coneecting.
>
> I tried with FTP and SFTP, both are working as i expected.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)