Hi

You should use # to refer to a bean in the registry, eg to do a
lookup. So use #client

On Fri, Apr 19, 2019 at 10:56 AM Marx, Peter
<peter.m...@knorr-bremse.com> wrote:
>
> Hi,
>
> I want to add a route for the camel-azure component 2.23.0 in pure JavaDSL 
> with no Spring. Documentation 
> https://github.com/apache/camel/blob/master/components/camel-azure/src/main/docs/azure-blob-component.adoc
> only recommends to set the credentials and client options with a bean, but I 
> can't  get that to work. How to set the options directly in the URI is not 
> described.
> Without bean I get an exception like this:
>
> [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java 
> (default-cli) on project testjava: An exception occured while executing the 
> Java class. Failed to create route route1: 
> Route(route1)[[From[azure-blob:/shared1/mxtest/blabla?azureB... because of 
> Failed to resolve endpoint: 
> azure-blob:///shared1/mxtest/blabla?azureBlobClient=client due to: Could not 
> find a suitable setter for property: azureBlobClient as there isn't a setter 
> method with same type: java.lang.String nor type conversion possible: No type 
> converter available to convert from type: java.lang.String to the required 
> type: com.microsoft.azure.storage.blob.CloudBlob with value client
>
> With bean it is the same error "no type converter...with value #clientreg"  - 
> I assume the bean lookup does not work -  would be my 2. question how to fix 
> that..
>
> The azureBlobClient option must be of type CloudBlockBlob, credentials of 
> type StorageCredentials.
>
> How can I set the required credentials or client options in the URI ?
>
>
> Peter
>
>
> package testjava;
>
> import org.apache.camel.*;
> import org.apache.camel.impl.SimpleRegistry;
> import org.apache.camel.language.Bean;
> import org.apache.camel.main.Main;
> import org.apache.camel.CamelContext;
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.builder.RouteBuilder;
> import com.microsoft.azure.storage.*;
> import com.microsoft.azure.storage.blob.*;
>
> public class MainApp
> {
>             public static class ClientBean
>             {
>                         public CloudBlockBlob client()
>                         {
>                                    try
>                                    {
>                                                StorageCredentials creds = new 
> StorageCredentialsAccountAndKey("shared1", "here gooes my key jG/zyK....");
>                                                StorageUri storageURI = new 
> StorageUri(new java.net.URI("https://shared1.blob.core.windows.net/mxtest";));
>                                                CloudBlockBlob client = new 
> CloudBlockBlob(storageURI, creds);
>                                                return client;
>                                    }
>                                    catch(Exception e)
>                                    {
>                                                return null;
>                                    }
>                         }
>             }
>
>             public static void main(String... args) throws Exception
>             {
>                         SimpleRegistry myregistry = new SimpleRegistry();
>                         CamelContext mycontext = new 
> DefaultCamelContext(myregistry);
>                         myregistry.put("clientreg", new ClientBean());
>
>                         // as bean does not work, I try to set the stuff 
> directly:
>                         StorageCredentials creds = new 
> StorageCredentialsAccountAndKey("shared1", "here goes my key");
>                         StorageUri storageURI = new StorageUri(new 
> java.net.URI("https://shared1.blob.core.windows.net/mxtest";));
>                         CloudBlockBlob client = new 
> CloudBlockBlob(storageURI, creds);
>
>                         mycontext.addRoutes
>                                    (new RouteBuilder()
>                                                {
>                                                            @Override
>                                                            public void 
> configure()
>                                                            {
>                                                                            
> //bean does not work:    
> from("azure-blob:/shared1/mxtest/blabla?azureBlobClient=#clientreg")
>                                                                        
> from("azure-blob:/shared1/mxtest/blabla?azureBlobClient=client")
>                                                                        
> .to("file:c:\\mx\\source");
>                                                            }
>                                                }
>                                    );
>                         mycontext.start();
>             }
> }
>
>
>
> Knorr-Bremse Systeme für Schienenfahrzeuge GmbH
> Sitz: München
> Geschäftsführer: Dr. Jürgen Wilder (Vorsitzender), Mark Cleobury, Dr. Nicolas 
> Lange, Dr. Peter Radina, Harald Schneider
> Vorsitzender des Aufsichtsrats: Klaus Deller
> Registergericht München, HR B 91 181
>
> This transmission is intended solely for the addressee and contains 
> confidential information.
> If you are not the intended recipient, please immediately inform the sender 
> and delete the message and any attachments from your system.
> Furthermore, please do not copy the message or disclose the contents to 
> anyone unless agreed otherwise. To the extent permitted by law we shall in no 
> way be liable for any damages, whatever their nature, arising out of 
> transmission failures, viruses, external influence, delays and the like.
>


-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to