Using interceptSendToEndpoint I've tried setting the header
Exchange.INTERCEPTED_ENDPOINT
to the new endpoint URI (without the fileName) and setting the filename as
Exchange.FILE_NAME.

However the enpoint parameters being used remain the original one.

this is the my interceptSendToEndpoint:



interceptSendToEndpoint("(ftp|sftp|ftps):.*").process(
   new Processor() {
      public void process(Exchange exchange) throws Exception {
         Logger logger = Logger.getLogger("Interceptor");
         try
         {
            String interceptedEndpoint =
exchange.getIn().getHeader(Exchange.INTERCEPTED_ENDPOINT, String.class);
            logger.info("Intercepted endpoint: " + interceptedEndpoint);
            URI endpointURI = new URI(interceptedEndpoint);
            String query = endpointURI.getQuery();
                                                                        
            Map paramsMap = new HashMap<String,String>();
            String params[] = query.split("&");

            for (String param : params) {
               String temp[] = param.split("=");
               paramsMap.put(temp[0], temp[1]);
            }
                                                                    
            if(paramsMap.containsKey("fileName"))
            {
               String fileName = (String) paramsMap.get("fileName");
               logger.debug("fileName:" +  fileName);
                                                                        
                                                                        
               exchange.getIn().setHeader(Exchange.FILE_NAME, fileName);
               //TODO: remove the hack
               exchange.getIn().setHeader(Exchange.FILE_NAME, "test.xml");
               paramsMap.remove("fileName");
                                                                        
               StringBuilder amendedQuery = new StringBuilder();
               for(Object eachKey : paramsMap.keySet())
               {
                  if(amendedQuery.length() > 0)
                  {
                     amendedQuery.append("&");
                  }
                  amendedQuery.append(eachKey.toString());
                  amendedQuery.append("=");
                  amendedQuery.append(paramsMap.get(eachKey).toString());
               }
                                                                        
               logger.debug("new querystring:" + amendedQuery.toString());
                                                                        
               URI amendedEndpointURI = new URI(endpointURI.getScheme(), 
               endpointURI.getUserInfo(),
                  endpointURI.getHost(),
                  endpointURI.getPort(),
                  endpointURI.getPath(), 
                  amendedQuery.toString(),
                  endpointURI.getFragment());
                                                                        
               interceptedEndpoint = amendedEndpointURI.toString();
               logger.info("New endpoint: " + interceptedEndpoint);
               exchange.getIn().setHeader(Exchange.INTERCEPTED_ENDPOINT,
interceptedEndpoint);

            }
            else
            {
               logger.error("Cannot find parameter fileName.");
            }                                                                   
                                                        
         }
         catch(Exception anException)
         {
            logger.error("Exception occurred:" + anException);
         }
      }
   }
);




-- 
View this message in context: 
http://camel.465427.n5.nabble.com/FTP-creating-connections-for-every-file-name-in-the-uri-tp478938p2999929.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to