You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by "Marx, Peter" <Pe...@knorr-bremse.com> on 2019/04/19 08:55:50 UTC
azure-blob with JavaDSL: can't set URI options with bean or any other
method
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.
RE: azure-blob with JavaDSL: can't set URI options with bean or any
other method
Posted by "Marx, Peter" <Pe...@knorr-bremse.com>.
Hi Claus,
I did that, see commented line:
//bean does not work: from("azure-blob:/shared1/mxtest/blabla?azureBlobClient=#clientreg")
-----Original Message-----
From: Claus Ibsen <cl...@gmail.com>
Sent: Friday, April 19, 2019 11:02 AM
To: users@camel.apache.org
Subject: Re: azure-blob with JavaDSL: can't set URI options with bean or any other method
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 <Pe...@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
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.
Re: azure-blob with JavaDSL: can't set URI options with bean or any
other method
Posted by Claus Ibsen <cl...@gmail.com>.
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
<Pe...@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
R: RE: azure-blob with JavaDSL: can't set URI options with bean
Posted by Andrea Cosentino <an...@yahoo.com.INVALID>.
We are introducing in some components an automatic injection of bean from the registry.. for example if only one instance of a bean is in the registry, we can set it directly on the component/endpoint configuration. We can check if it is feasible for Azure too. Can you raise an enhacement on camel Jira?
Inviato da Yahoo Mail su Android
Il ven, 19 apr, 2019 alle 17:58, Marx, Peter<Pe...@knorr-bremse.com> ha scritto: I see.. Lookup does work now! Reading CiA I had assumed that the lookup for the (only) bean method happens automatically and would return a CloudBlob instance. Not sure if this my general misunderstanding or is special to using beans in URI.
Thanks
Peter
-----Original Message-----
From: Andrea Cosentino <an...@yahoo.com.INVALID>
Sent: Friday, April 19, 2019 2:24 PM
To: users@camel.apache.org
Subject: Re: azure-blob with JavaDSL: can't set URI options with bean or any other method
ClientBean is the type of element you're trying to set in the registry. But you need to pass a CludBlockBlob.
So you may need to do something like
myregistry.put("clientreg", new ClientBean().client());
and then use #clientreg in your route.
the azureBlobClient parameter expects a CloudBlob instance and you're trying to set a ClientBean instance. The behavior is totally correct.
--
Andrea Cosentino
----------------------------------
Apache Camel PMC Chair
Apache Karaf Committer
Apache Servicemix PMC Member
Email: ancosen1985@yahoo.com
Twitter: @oscerd2
Github: oscerd
On Friday, April 19, 2019, 10:56:09 AM GMT+2, Marx, Peter <Pe...@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.
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.
RE: azure-blob with JavaDSL: can't set URI options with bean or any
other method
Posted by "Marx, Peter" <Pe...@knorr-bremse.com>.
I see.. Lookup does work now! Reading CiA I had assumed that the lookup for the (only) bean method happens automatically and would return a CloudBlob instance. Not sure if this my general misunderstanding or is special to using beans in URI.
Thanks
Peter
-----Original Message-----
From: Andrea Cosentino <an...@yahoo.com.INVALID>
Sent: Friday, April 19, 2019 2:24 PM
To: users@camel.apache.org
Subject: Re: azure-blob with JavaDSL: can't set URI options with bean or any other method
ClientBean is the type of element you're trying to set in the registry. But you need to pass a CludBlockBlob.
So you may need to do something like
myregistry.put("clientreg", new ClientBean().client());
and then use #clientreg in your route.
the azureBlobClient parameter expects a CloudBlob instance and you're trying to set a ClientBean instance. The behavior is totally correct.
--
Andrea Cosentino
----------------------------------
Apache Camel PMC Chair
Apache Karaf Committer
Apache Servicemix PMC Member
Email: ancosen1985@yahoo.com
Twitter: @oscerd2
Github: oscerd
On Friday, April 19, 2019, 10:56:09 AM GMT+2, Marx, Peter <Pe...@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.
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.
Re: azure-blob with JavaDSL: can't set URI options with bean or any
other method
Posted by Andrea Cosentino <an...@yahoo.com.INVALID>.
ClientBean is the type of element you're trying to set in the registry. But you need to pass a CludBlockBlob.
So you may need to do something like
myregistry.put("clientreg", new ClientBean().client());
and then use #clientreg in your route.
the azureBlobClient parameter expects a CloudBlob instance and you're trying to set a ClientBean instance. The behavior is totally correct.
--
Andrea Cosentino
----------------------------------
Apache Camel PMC Chair
Apache Karaf Committer
Apache Servicemix PMC Member
Email: ancosen1985@yahoo.com
Twitter: @oscerd2
Github: oscerd
On Friday, April 19, 2019, 10:56:09 AM GMT+2, Marx, Peter <Pe...@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.