svn commit: r889323 - in /websites/production/camel/content: book-dataformat-appendix.html book-in-one-page.html cache/main.pageCache crypto.html

2013-12-05 Thread buildbot
Author: buildbot
Date: Fri Dec  6 07:23:51 2013
New Revision: 889323

Log:
Production update by buildbot for camel

Modified:
websites/production/camel/content/book-dataformat-appendix.html
websites/production/camel/content/book-in-one-page.html
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/crypto.html

Modified: websites/production/camel/content/book-dataformat-appendix.html
==
--- websites/production/camel/content/book-dataformat-appendix.html (original)
+++ websites/production/camel/content/book-dataformat-appendix.html Fri Dec  6 
07:23:51 2013
@@ -3901,8 +3901,8 @@ from("direct:inline-sign")
 

[CONF] Apache Camel > Crypto

2013-12-05 Thread Franz Forsthofer (Confluence)







Crypto
Page edited by Franz Forsthofer


 Changes (4)
 




...
Map userId2Passphrase = new HashMap(2); // add passphrases of several private keys whose corresponding public keys have been used to encrypt the messages 
userId2Passphrase.put("UserIdOfKey1","passphrase1"); // you must specify the exact User ID! 
userId2Passphrase.put("key1","passphrase1"); userId2Passphrase.put("UserIdOfKey2","passphrase2"); 
userId2Passphrase.put("key2","passphrase2"); 
PGPPassphraseAccessor passphraseAccessor = new PGPPassphraseAccessorDefault(userId2Passphrase);  
...
// the method getPublicKeyRing() provides the public keyring as byte array containing the public keys pgpVerifyAndDecrypt.setSignatureKeyRing((getPublicKeyRing());  // alternatively you can use setSignatureKeyFileName(signatgureKeyfileName) 
// it is not necessary to specify the encryption or signer  User Id 
 from("direct:start") 
...


Full Content

Crypto
Available as of Camel 2.3
PGP Available as of Camel 2.9

The Crypto Data Format integrates the Java Cryptographic Extension into Camel, allowing simple and flexible encryption and decryption of messages using Camel's familiar marshall and unmarshal formatting mechanism. It assumes marshalling to mean encryption to cyphertext and unmarshalling to mean decryption back to the original plaintext. This data format implements only symmetric (shared-key) encryption and decyption.

Options



 Name 
 Type 
 Default 
 Description 


 algorithm 
 String 
 DES/CBC/PKCS5Padding 
 The JCE algorithm name indicating the cryptographic algorithm that will be used. 


 algorithmParameterSpec 
 java.security.spec.AlgorithmParameterSpec 
 null 
A JCE AlgorithmParameterSpec used to initialize the Cipher. 


 bufferSize 
 Integer 
 2048 
 the size of the buffer used in the signature process. 


 cryptoProvider 
 String 
 null 
 The name of the JCE Security Provider that should be used. 


 initializationVector 
 byte[] 
 null 
 A byte array containing the Initialization Vector that will be used to initialize the Cipher. 


 inline 
 boolean 
 false 
 Flag indicating that the configured IV should be inlined into the encrypted data stream. 


 macAlgorithm 
 String 
 null 
 The JCE algorithm name indicating the Message Authentication algorithm. 


 shouldAppendHMAC 
 boolean 
 null 
 Flag indicating that a Message Authentication Code should be calculated and appended to the encrypted data.





Basic Usage
At its most basic all that is required to encrypt/decrypt an exchange is a shared secret key. If one or more instances of the Crypto data format are configured with this key the format can be used to encrypt the payload in one route (or part of one) and decrypted in another. For example, using the Java DSL as follows:





In Spring the dataformat is configured first and then used in routes 




  

  
...
  





  




Specifying the Encryption Algorithm

Changing the algorithm is a matter of supplying the JCE algorithm name. If you change the algorithm you will need to use a compatible key.





A list of the available algorithms in Java 7 is available via the Java Cryptography Architecture Standard Algorithm Name Documentation.

Specifying an Initialization Vector

Some crypto algorithms, particularly block algorithms, require configuration with an initial block of data known as an Initialization Vector. In the JCE this is passed as an AlgorithmParameterSpec when the Cipher is initialized. To use such a vector with the CryptoDataFormat you can configure it with a byte[] containing the required data e.g.





or with spring, suppling a reference to a byte[]





The same vector is required in both the encryption and decryption phases. As it is not necessary to keep the IV a secret, the DataFormat allows for it to be inlined into the encrypted data and subsequently read out in the decryption phase to initialize the Cipher. To inline the IV set the /oinline flag.





or with spring.





For more information of the use of Initialization Vectors, consult


	http://en.wikipedia.org/wiki/Initialization_vector
	http://www.herongyang.com/Cryptography/
	http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation



Hashed Message Authentication Codes (HMAC)

To avoid attacks against the encrypted data while it is in transit the CryptoDataFormat can also calculate a Message Authentication Code for the encrypted exchange contents based on a configurable MAC algorithm. The calculated HMAC is appended to the stream after encryption. It is separated from the stream in the decryption phase. The MAC is recalculated and verified against the transmitted version to insure nothing was ta

svn commit: r889237 - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache ftp.html ftp2.html

2013-12-05 Thread buildbot
Author: buildbot
Date: Thu Dec  5 14:20:50 2013
New Revision: 889237

Log:
Production update by buildbot for camel

Modified:
websites/production/camel/content/book-component-appendix.html
websites/production/camel/content/book-in-one-page.html
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/ftp.html
websites/production/camel/content/ftp2.html

Modified: websites/production/camel/content/book-component-appendix.html
==
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Thu Dec  5 
14:20:50 2013
@@ -5451,6 +5451,17 @@ The reason is that we leverage Spring's 
 
 You can also assign a user name and password to the proxy, if necessary. 
Please consult the documentation for com.jcraft.jsch.Proxy to discover 
all options.
 
+Setting
 preferred SFTP authentication method
+
+If you want to explicitly specify the list of authentication method that 
should be used by sftp component, use 
preferredAuthentications option. If for example you would like Camel 
to attempt to authenticate with private/public SSH key and fallback to 
user/password authentication in the case when no public key is available, use 
the following route configuration:
+
+
+ftp://localhost:/root?username=admin&password=admin&preferredAuthentications=publickey,password";).
+  to("bean:processFile");
+]]>
+ 
+
 Consuming 
a single file using a fixed name
 
 When you want to download a single file and knows the file name, you can 
use fileName=myFileName.txt to tell Camel the name of the file to 
download. By default the consumer will still do a FTP LIST command to do a 
directory listing and then filter these files based on the fileName 
option. Though in this use-case it may be desirable to turn off the directory 
listing by setting useList=false. For example the user account used to 
login to the FTP server may not have permission to do a FTP LIST command. So 
you can turn off this with useList=false, and then provide the fixed 
name of the file to download with fileName=myFileName.txt, then the 
FTP consumer can still download the file. If the file for some reason does not 
exist, then Camel will by default throw an exception, you can turn this off and 
ignore this by setting ignoreFileNotFoundOrPermissionError=true.

Modified: websites/production/camel/content/book-in-one-page.html
==
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Thu Dec  5 14:20:50 
2013
@@ -27048,6 +27048,17 @@ The reason is that we leverage Spring's 
 
 You can also assign a user name and password to the proxy, if necessary. 
Please consult the documentation for com.jcraft.jsch.Proxy to discover 
all options.
 
+Setting 
preferred SFTP authentication method
+
+If you want to explicitly specify the list of authentication method that 
should be used by sftp component, use 
preferredAuthentications option. If for example you would like Camel 
to attempt to authenticate with private/public SSH key and fallback to 
user/password authentication in the case when no public key is available, use 
the following route configuration:
+
+
+ftp://localhost:/root?username=admin&password=admin&preferredAuthentications=publickey,password";).
+  to("bean:processFile");
+]]>
+ 
+
 Consuming a single 
file using a fixed name
 
 When you want to download a single file and knows the file name, you can 
use fileName=myFileName.txt to tell Camel the name of the file to 
download. By default the consumer will still do a FTP LIST command to do a 
directory listing and then filter these files based on the fileName 
option. Though in this use-case it may be desirable to turn off the directory 
listing by setting useList=false. For example the user account used to 
login to the FTP server may not have permission to do a FTP LIST command. So 
you can turn off this with useList=false, and then provide the fixed 
name of the file to download with fileName=myFileName.txt, then the 
FTP consumer can still download the file. If the file for some reason does not 
exist, then Camel will by default throw an exception, you can turn this off and 
ignore this by setting ignoreFileNotFoundOrPermissionError=true.

Modified: websites/production/camel/content/cache/main.pageCache
==
Binary files - no diff available.

Modified: w

[CONF] Apache Camel > FTP2

2013-12-05 Thread Henryk Konsek (Confluence)







FTP2
Page edited by Henryk Konsek


 Changes (1)
 




...
You can also assign a user name and password to the proxy, if necessary. Please consult the documentation for {{com.jcraft.jsch.Proxy}} to discover all options.  
h3. Setting preferred SFTP authentication method  If you want to explicitly specify the list of authentication method that should be used by {{sftp}} component, use {{preferredAuthentications}} option. If for example you would like Camel to attempt to authenticate with private/public SSH key and fallback to user/password authentication in the case when no public key is available, use the following route configuration:  {code} from("sftp://localhost:/root?username=admin&password=admin&preferredAuthentications=publickey,password").   to("bean:processFile"); {code}   
h3. Consuming a single file using a fixed name  
...


Full Content

FTP/SFTP/FTPS Component

This component provides access to remote file systems over the FTP and SFTP protocols.

Maven users will need to add the following dependency to their pom.xml for this component:



org.apache.camel
camel-ftp
x.x.x





More optionsSee File for more options as all the options from File is inherited.

Consuming from remote FTP serverMake sure you read the section titled Default when consuming files further below for details related to consuming files.

URI format



ftp://[username@]hostname[:port]/directoryname[?options]
sftp://[username@]hostname[:port]/directoryname[?options]
ftps://[username@]hostname[:port]/directoryname[?options]



Where directoryname represents the underlying directory. Can contain nested folders.

If no username is provided, then anonymous login is attempted using no password.
If no port number is provided, Camel will provide default values according to the protocol (ftp = 21, sftp = 22, ftps = ).

You can append query options to the URI in the following format, ?option=value&option=value&...

This component uses two different libraries for the actual FTP work. FTP and FTPS uses Apache Commons Net while SFTP uses JCraft JSCH.

The FTPS component is only available in Camel 2.2 or newer.
FTPS (also known as FTP Secure) is an extension to FTP that adds support for the Transport Layer Security (TLS) and the Secure Sockets Layer (SSL) cryptographic protocols.

URI Options

The options below are exclusive for the FTP component.

More optionsSee File for more options as all the options from File is inherited.




 Name 
 Default Value 
 Description 


 username 
 null 
 Specifies the username to use to log in to the remote file systen. 


 password 
 null 
 Specifies the password to use to log in to the remote file system. 


 binary 
 false 
 Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). 


 disconnect 
 false 
 Camel 2.2: Whether or not to disconnect from remote FTP server right after use. Can be used for both consumer and producer. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. 


 localWorkDirectory 
 null 
 When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. See below for more details. 


 passiveMode 
 false 
 FTP and FTPS only: Specifies whether to use passive mode connections. Default is active mode (false). 


 securityProtocol 
 TLS 
 FTPS only: Sets the underlying security protocol. The following values are defined: 
TLS: Transport Layer Security 
SSL: Secure Sockets Layer 


 disableSecureDataChannelDefaults 
 false 
 Camel 2.4: FTPS only: Whether or not to disable using default values for execPbsz and execProt when using secure data transfer. You can set this option to true if you want to be in absolute full control what the options execPbsz and execProt should be used. 


 download 
 true 
 Camel 2.11: Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. 


 streamDownload 
 false 
 Camel 2.11: Whether the consumer should download the entire file up front, the default behavior, or if it should pass an InputStream read from the remote resource rather than an in-memory array as the in body of the Camel Exchange.  This option is ignored if download is false or is localWorkDirectory is provided.  This option is useful for working with large remote files. 


 execPro

svn commit: r889220 - in /websites/production/camel/content: cache/main.pageCache camel-2130-release.html

2013-12-05 Thread buildbot
Author: buildbot
Date: Thu Dec  5 11:19:01 2013
New Revision: 889220

Log:
Production update by buildbot for camel

Modified:
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/camel-2130-release.html

Modified: websites/production/camel/content/cache/main.pageCache
==
Binary files - no diff available.

Modified: websites/production/camel/content/camel-2130-release.html
==
--- websites/production/camel/content/camel-2130-release.html (original)
+++ websites/production/camel/content/camel-2130-release.html Thu Dec  5 
11:19:01 2013
@@ -135,9 +135,6 @@
 
 New Tooling
 
-[camel:hawtio] Maven 
goal.
-
-
 API changes
 
 Known Issues
@@ -148,7 +145,7 @@
 
 The below list is a best effort, and we may miss some updates, its better 
to use the http://vdiff.notsoclever.cc/"; rel="nofollow">Camel Dependencies Version 
Differences web tool which uses the released projects for comparison.
 
-AHC 1.7.20 to 1.7.21APNS 0.1.6 to 0.2.3AWS-SDK 1.5.1 
to 1.6.3Avro 1.7.3 to 1.7.5BeanIO 2.0.6 to 2.0.7CXF 
2.7.6 to 2.7.8EHCache 2.7.2 to 2.7.4Elasticsearch 0.20.6 to 
0.90.5FOP 1.0 to 1.1Guave 14.0.1 to 15.0Hazelcast 
2.6 to 3.0.2ICal4j 1.0.4 to 1.0.5.2Jetty 7.6.9 to 
8.1.12Joda time 2.1 to 2.3JRuby 1.7.4 to 1.7.5Lucene 
3.6.0 to 4.5.1MongoDB Java Driver 2.11.2 to 2.11.3Quartz 
2.2.0 to 2.2.1Restlet 2.0.15 to 2.1.4Saxon 9.5.0.2 to 
9.5.1-2Scala 2.10.2 to 2.10.3Servlet API 2.5 to 
3.0SolrJ 3.6.2 to 4.5.1Spring Batch 2.2.1.RELEASE to 
2.2.2.RELEASESpring Redis 1.0.4.RELEASE to 1.1.0.RELEASESSHD 
0.8.0 to 0.9.0TestNG 6.8.5 to 6.8.7
+AHC 1.7.20 to 1.7.21APNS 0.1.6 to 0.2.3AWS-SDK 1.5.1 
to 1.6.3Avro 1.7.3 to 1.7.5BeanIO 2.0.6 to 2.0.7CXF 
2.7.6 to 2.7.8EHCache 2.7.2 to 2.7.4Elasticsearch 0.20.6 to 
0.90.5FOP 1.0 to 1.1Guave 14.0.1 to 15.0Hazelcast 
2.6 to 3.0.2ICal4j 1.0.4 to 1.0.5.2Jclouds 1.6.2-incubating 
to 1.6.3Jetty 7.6.9 to 8.1.12Joda time 2.1 to 
2.3JRuby 1.7.4 to 1.7.5Lucene 3.6.0 to 4.5.1MongoDB 
Java Driver 2.11.2 to 2.11.3Quartz 2.2.0 to 2.2.1Restlet 
2.0.15 to 2.1.4Saxon 9.5.0.2 to 9.5.1-2Scala 2.10.2 to 
2.10.3Servlet API 2.5 to 3.0SolrJ 3.6.2 to 
4.5.1Spring Batch 2.2.1.RELEASE to 2.2.2.RELEASESpring Redis 
1.0.4.RELEASE to 1.1.0.RELEASESSHD 0.8.0 to 0.9.0TestNG 6.8.5 
to 6.8.7
 
 
 Internal 
changes




[CONF] Apache Camel > Camel 2.13.0 Release

2013-12-05 Thread Babak Vahdat (Confluence)







Camel 2.13.0 Release
Page edited by Babak Vahdat


 Changes (1)
 




...
* Hazelcast 2.6 to 3.0.2 * ICal4j 1.0.4 to 1.0.5.2 
* Jclouds 1.6.2-incubating to 1.6.3 
* Jetty 7.6.9 to 8.1.12 * Joda time 2.1 to 2.3 
...


Full Content

Camel 2.13.0 release (currently in progress)




New and Noteworthy

Welcome to the 2.13.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)


	The MBean names registered by Camel JMX no longer include the hostname in the context part, eg before context=myHost/myCamelId and now after context=myCamelId. Having the hostname in the MBean name does not bring much value, and in fact makes things more complicated as the mbean name changes depending on the host running Camel.
	MBean naming in OSGi cleaned up to use simpler naming with symbolicName. Before we could have MBean names with duplicate bundle ids such as context=114-114-camel-6, which now is using the symbolic name instead, context=MyApplication.
	When using multiple OSGi Blueprint 's then Camel now favors using non-default placeholders, or the last property-placeholder defined in the Blueprint XML file. This allows for example to define default properties in one placeholder, and override these values in other placeholders.
	FTP consumer allow to download a single named file without using the FTP LIST command. This allows to download a known file from a FTP server even when the user account does not have permission to do FTP LIST command.
	FTP consumer allow to ignore file not found or insufficient file permission errors.
	Data Format using marshal now leverages Stream caching out of the box if enabled, which allows to marshal big streams and spool to disk, instead of being pure in-memory based.
	Improved using Bean when the bean is looked up in the Registry, when using concurrent processing in the route.
	Added cache option to beanRef and  in the DSL. This avoids looking up the Bean from the Registry on each usage; this can safely be done for singleton beans.
	Configuring Data Formats in XML attributes now supports reference lookup using the # syntax, eg 
	JDBC component now also support outputType to specify the expected output as either a List or single Object. As well allow to map to a bean using a BeanRowMapper to control the mapping of ROW names to bean properties.
	Both Quartz as well as Quartz2 based ScheduledRoutePolicy has been improved to better support cluster setups (e.g. to not schedule jobs being already scheduled through another node inside a given cluster).
	Reduced the work the Aggregate EIP does while holding a lock during aggregation, which can lead to improved performance in some use-cases.
	JndiRegistry now implements all the find methods.
	VM component now supports multipleConsumers=true across deployment units.
	Added @PreConsumed to JPA consumer.
	Added CamelFileName header support to the HDFS producer
	Like as JpaConsumer now also JpaProducer of the JPA component supports the CamelEntityManager header.
	Restlet consumer now supports returning custom headers as HTTP headers from the Camel Message.
	Spring Java Config CamelConfiguration now automagically detects all RouteBuilder instances registered in the Spring context if CamelConfiguration#routes method is not overridden.
	Added support for transferring custom headers with RabbitMQ component.
	PGPDataFormat enables stream cache during unmarshaling.
	FileIdempotentRepository now creates necessary parent directories together with the new repository file.
	Properties component and property placeholder will now ignore non existing JVM and environment options as well if ignoreMissingLocation is set to true.
	Improved Stream consumer to enrich the Message with headers about current index / completion flag.
	Added @BeanInject to inject beans (obtained from the Registry) in your beans such as RouteBuilder classes.
	Polished the Karaf commands to output tables sorted and auto calculated width, so the data is formatted nicely.
	Introduced UnitOfWorkFactory to allow end users to use custom UnitOfWork implementations created by the factory.
	Doing request/reply over JMS allows per individual message requestTimeout value by specifying the timeout value in the "CamelJmsRequestTimeout" header.
	Quartz and Quartz2 components now enlist the quartz scheduler by default in JMX, unless configured to be disabled.




Fixed Issues


	Fixed an ArrayIndexOutOfBoundsException with Message History when using SEDA
	Fixed requestTimeout on Netty not triggering when we have received message.
	Fixed Parameter Binding Annotations on boolean types to evaluate as Predicate instead of _expression_
	Fixed using File consumer with delete=true&readLock=fileLock not being able to delete th

git commit: CAMEL-7041: Upgraded to jclouds 1.6.3

2013-12-05 Thread bvahdat
Updated Branches:
  refs/heads/master 298889a9d -> d43c34bca


CAMEL-7041: Upgraded to jclouds 1.6.3

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d43c34bc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d43c34bc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d43c34bc

Branch: refs/heads/master
Commit: d43c34bcac8057e893582fe338507cb6770bcfd0
Parents: 298889a
Author: Babak Vahdat 
Authored: Thu Dec 5 11:18:36 2013 +0100
Committer: Babak Vahdat 
Committed: Thu Dec 5 11:18:36 2013 +0100

--
 .../apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java   | 2 +-
 .../org/apache/camel/component/jclouds/JcloudsComputeProducer.java | 1 -
 parent/pom.xml | 2 +-
 3 files changed, 2 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/camel/blob/d43c34bc/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
--
diff --git 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
index b16a608..b702b19 100644
--- 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
+++ 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
@@ -81,7 +81,7 @@ public class JcloudsBlobStoreConsumer extends 
ScheduledBatchPollingConsumer {
 Exchange exchange = endpoint.createExchange();
 CachedOutputStream cos = new 
CachedOutputStream(exchange);
 IOHelper.copy(body, cos);
-exchange.getIn().setBody(cos.getStreamCache());
+exchange.getIn().setBody(cos.newStreamCache());
 exchange.setProperty(JcloudsConstants.BLOB_NAME, 
blobName);
 queue.add(exchange);
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/d43c34bc/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
--
diff --git 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
index 139e29f..3d630d4 100644
--- 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
+++ 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
@@ -107,7 +107,6 @@ public class JcloudsComputeProducer extends JcloudsProducer 
{
 /**
  * Runs a script on the target node.
  */
-@SuppressWarnings("deprecation")
 protected void runScriptOnNode(Exchange exchange) throws CamelException {
 String script = exchange.getIn().getBody(String.class);
 String nodeId = getNodeId(exchange);

http://git-wip-us.apache.org/repos/asf/camel/blob/d43c34bc/parent/pom.xml
--
diff --git a/parent/pom.xml b/parent/pom.xml
index 62cc115..02c7d60 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -210,7 +210,7 @@
 1.0.0.Final
 3.1.3.GA
 1.3.18.GA
-1.6.2-incubating
+1.6.3
 
 14.0.1
 2.0