19 months agoRemove site profile and wired enforcer executions
gurkerl83 [Sun, 6 Dec 2020 21:24:44 +0000 (22:24 +0100)] 
Remove site profile and wired enforcer executions

The site profile defines various enforcer execution rules, banned-dependencies, java (java and maven version). Those declarations in combination with the standard maven properties for the JDK version seem misleading and duplicated. Also, there is no indicator that the site profile is ever defined for a maven build.

19 months agoRemove maven property site url
gurkerl83 [Sun, 6 Dec 2020 20:18:23 +0000 (21:18 +0100)] 
Remove maven property site url

In the last three commits, the site reporting feature got gradually decommissioned. This commit removes any remaining fragments in this regard. Remove the section distribution management from the profile clouds-project. The comment about incorrect links generated might have resulted from multiple invocations of the check style plugin. Previously the check style plugin got utilized at multiple sections (reporting section and profiles) and probably overlapping maven lifecycles.

19 months agoRemove section reporting
gurkerl83 [Sun, 6 Dec 2020 20:06:01 +0000 (21:06 +0100)] 
Remove section reporting

In the last two commits, the site reporting feature got gradually decommissioned. The maven plugin project-info-reports got removed in the previous commit, which gets controlled by the reporting section. Because this workflow is out of use, this commit removes the reporting section.

19 months agoRemove maven site deployment related plugins
gurkerl83 [Sun, 6 Dec 2020 19:44:30 +0000 (20:44 +0100)] 
Remove maven site deployment related plugins

The previous site plugin utilizes several plugins. In about half of the cases, the respective version of a plugin as described in the outside plugin section. The following list enumerates those plugins and my reasoning to remove them safely from the section plugins.

- maven-project-info-reports-plugin (remove - because no reports get generated)
- maven-javadoc-plugin (stays - even when a profile doc exists, which provides a dedicated setup.) We have to discuss the removal to avoid any side effects.
- emma-maven-plugin (stays - my impression is that it is a duplicated declaration)
- maven-jxr-plugin (remove - only version declaration, with no further config, not utilized anywhere)
- maven-surefire-report-plugin (remove - only version declaration, with no further config, not utilized anywhere)
- apache-rat-plugin (stays - decision is straightforward. We have to discuss a restructure because the plugin gets mentioned three times; I guess one can get removed.
- maven-pmd-plugin (remove - only version declaration, with no further config, not utilized anywhere)
- spotbugs-maven-plugin (stays - beacuse of its extended configuration section - discuss a removal)

19 months agoRemove maven site deployment
gurkerl83 [Sun, 6 Dec 2020 19:06:06 +0000 (20:06 +0100)] 
Remove maven site deployment

The maven site-plugin uses the declaration "site" in the section "distribution management," which points to a git repository named "jclouds-maven-site." This git repository got never relocated during the apache migration; also, it is ancient. My impression is that the site deployment is outdated and got used in the early days of JClouds.

19 months agoRemove explicit OSGi import range of okio dep
gurkerl83 [Wed, 3 Feb 2021 21:55:29 +0000 (22:55 +0100)] 
Remove explicit OSGi import range of okio dep

All OkHttp components get shipped with any OSGi metadata. Tracking the progress of that issue from version 5 onwards, OkHttp finally provides OSGi support. Because JClouds OkHttp dependencies got renewed from 2.2.0 to the latest 3 (3.14.9), the respective bundles from Apache Servicemix got used in a deployment scenario. On the other hand, the problem with Servicemix is that there is no full match of published OkHttp dependencies to the respective bundle equivalent.


My test shows that none of the version 3 bundles work because of a missing package dependency "javax.annotation.meta". Sure higher version of 9 strips the javax.annotation module entirely, but the meta package is not there in JDK 8 either. As you can see from the link above, only two versions of 3.14 got published in the service mix; it is not clear to which version the bundle equivalents relate. From my understanding, it is much more important to use identical versions of OkHttp dependencies used in JClouds.

To utilize the original OKHttp libraries, consumer projects have to ensure those libraries get loaded using OSGi helper tools such as the wrap protocol provided by Apache Karaf or similar.

To reduce OSGi noise, I removed the OSGi import range of okio dependency entirely. A declaration like that does not make sense; otherwise, a set of Okhttp ranges must also be defined.

Note: The wildcard (*) declaration provides a way out, which allows any version of a package used in JClouds but itself does not give any OSGi metadata. Hopefully, I do not confuse you too much.

19 months agoClear rule for bouncycastle exclusion
gurkerl83 [Wed, 3 Feb 2021 20:56:53 +0000 (21:56 +0100)] 
Clear rule for bouncycastle exclusion

- Mock-Webserver v2.2.0 - Vendor, defined dependency bcprov-jdk15on > Previously, the dependency got excluded; otherwise, it conflicted with the existing bouncy castle version used in JClouds.
- Mock-Webserver v3.14.9 - The vendor does not define a bouncy castle dependency anymore; instead, it moved to the okhttp-tls module.

- Introduce the okhttp-tls module for tests in the core module. The following APIs (Docker, Elastic-Stack) and providers Softlayer extend their respective MockTest from BaseMockWebServerTest. The mock base test is located in the test jar of JClouds core module.
- Due to conflicting bouncy castle classes in the classpath, those which get loaded from the okhttp-tls module, and those defined in JClouds bouncy castle module, the bouncy castle dependency of okhttp-tls has to get skipped for the two APIs and providers mentioned.

Side note:
The JClouds GAE driver module also requires the new okhttp-tls dependency because of the following chain of inheritance.
Different from the situation above, the bouncy castle classes of the okhttp-tls got not excluded.
GaeHttpCommandExecutorServiceIntegrationTest -> BaseHttpCommandExecutorServiceIntegrationTest -> BaseMockWebServerTest

The reason for this is unknown to me.

19 months agolost changes
korlov42 [Sat, 10 Oct 2020 06:30:14 +0000 (09:30 +0300)] 
lost changes

19 months agofix failed testSSLConnectionFailsIfOnlyHttpConfigured
korlov42 [Fri, 9 Oct 2020 20:25:48 +0000 (23:25 +0300)] 
fix failed testSSLConnectionFailsIfOnlyHttpConfigured

19 months agofix UnsupportedOperationException during setting socketFactory
korlov42 [Fri, 9 Oct 2020 17:24:11 +0000 (20:24 +0300)] 
fix UnsupportedOperationException during setting socketFactory

19 months agoJCLOUDS-1551: Update version of OkHttp 3.14.9
korlov42 [Tue, 6 Oct 2020 15:38:30 +0000 (18:38 +0300)] 
JCLOUDS-1551: Update version of OkHttp 3.14.9

20 months agoForce application/x-directory for directories
Andrew Gaul [Tue, 2 Feb 2021 13:56:51 +0000 (22:56 +0900)] 
Force application/x-directory for directories

Paths created by Files.createParentDirs lack extended attributes and
thus Content-Type for directories.

20 months agoAllow setting BlobAccess in LocalBlobStore.putBlob
Andrew Gaul [Sun, 31 Jan 2021 13:27:14 +0000 (22:27 +0900)] 
Allow setting BlobAccess in LocalBlobStore.putBlob

This addresses a race condition with filesystem users.

20 months agoAdd OSGi version ranges, guice, okio
gurkerl83 [Sat, 9 Jan 2021 18:25:53 +0000 (19:25 +0100)] 
Add OSGi version ranges, guice, okio

In the present feature, the two properties
- guava.osgi.import and
- okhttp.version
have not been attached to the build process (Bnd plugin), but have been recorded as comments only.

Before the resolution method is considered, the problem of Guava and its close coupling with Guice must be examined.

The Guice project possesses, differently to GSON no explicit configuration, how its dependencies are regarded in an OSGi execution environment.

Guice / Guava
- 4.1.0 / 19.0
- 4.2.0 /  [23.6,24)
- 4.2.1 / [25.1,26)
- 4.2.3 / [27.1,28) => used
- 5.0.0.BETA-1 / [27.1,28)

The version of Guice built into JClouds is 4.2.3. Increasing to this version number was not the subject of the current branch.

To avoid backward compatibility problems between Guice and Guava (e.g. Guice 4.2.3 -> Guava 24) this means that the version of Guava integrated in JClouds must be at least version 27.1. Guice puts this in its dependencies.

In my opinion, consumers (JClouds, as well as consumers of JClouds) should take this minimum barrier into account.

To understand the resolution, please consider the following previously unmerged feature.

In order to add a Guava verison range to the bundles rolled out by JClouds, the following import rule is added in the BND Configuration of the Project Module.

Import Package: \
    com.google.common.*;version="[27.1,30.1.0)", \
    okio.*;version="[1.2.0,1.3)", \

In the output of each JClouds module that uses Guava (and there are some) the configuration to the range version is observed. The bnd built into the JClouds project modules acts as a base of other bnd configurations, and should also apply in the Lab and Co repositories. Adjusted artefacts only become valid when a release is available or the build of these repositories is triggered again.

Output - Core Module

Import package:

Output - Blobstore Module

Import package:

Oki version range
The okhttp dependency requires okio version 1.2. The ok* libraries respectively the dependencies used in these libraries do not have OSGi instructions. For this reason, the previously integrated configuration is used.

Local tests show that the import directive can also be set globally, see above. An explicit specification in the bnd file of the JClouds okHTTP module is not useful because this JClouds module also uses Guava.

Output - OkHTTP Module

Import package:

In the following feature, the version of the "ok" framework has been significantly increased.  Extensive adjustments are also performed.

At this point, it should be noted that the import policy in the okio will probably have to be removed again because standalone OSGi metadata may be provided.

20 months agoMove from OSGi Spec V4.2 to V6
gurkerl83 [Mon, 26 Oct 2020 15:08:53 +0000 (16:08 +0100)] 
Move from OSGi Spec V4.2 to V6

Increase of OSGi dependencies core and compendium (now cmpn) from 4.2 to 6.0.
Previously it was possible to run JClouds in OSGi environments from version 4.

An essential aspect to use JClouds in an OSGi environment requires so-called feature sets. These can be generated manually or automatically - see JClouds-Karaf project. Since there have been significant changes in the structure and behaviour of Karaf in the meantime, an adaptation is appropriate.

Breaking change - probably not, as no other APIs of core and compendium are used than up to now.

OSGi - V4.2 - Karaf 2.2.x - to 2.2.9 (Current Status - not active)
OSGi - V6.0 - Karaf 4.1.x - 4.2 (Current Status - active)

20 months agoRemove duplicated finder exception for cloudsigma
gurkerl83 [Mon, 26 Oct 2020 14:34:29 +0000 (15:34 +0100)] 
Remove duplicated finder exception for cloudsigma

In the source code of JClouds cloudsigma as a keyword gets not used anywhere. In the JClouds-Lab project, cloudSigma is available both as an API and multiple provider modules. Because the project module from JClouds serves as a parent module for all JClouds-Labs modules, it seems reasonable to maintain those rules in the JClouds project module.

After inspecting the JClouds Lab source code, group artifact combinations of


..., respectively


..., are not available.

Cloudsigma in Lab uses the following group artifact combinations, all with a "2" prefix.

<artifactId>cloudsigma (2)</artifactId>

<artifactId>cloudsigma (2) -hnl</artifactId>

Loading those bundles into an OSGi runtime, a runtime collision happens because the API exports the identical packages as the provider modules.

Although this was the case in a previous version, it has since been corrected.


This commit removes the exception handling.

20 months agoReorder dependencies for core module
gurkerl83 [Mon, 26 Oct 2020 13:58:39 +0000 (14:58 +0100)] 
Reorder dependencies for core module

Reorder dependencies, integrate library javax.ws.rs-api in the parents' dependency management section

20 months agoRemove javax libraries
gurkerl83 [Mon, 26 Oct 2020 13:42:10 +0000 (14:42 +0100)] 
Remove javax libraries

Remove javax libraries inject and annotation. In JDK 8 those libraries are provided by the JDK. Younger JDK versions > 11 exclude them again to make the JDK leaner. Supporting younger JDK versions means integrating more younger libraries maintained by the Jakarta project.

20 months agoRemove Guice multibindings
gurkerl83 [Mon, 26 Oct 2020 13:28:56 +0000 (14:28 +0100)] 
Remove Guice multibindings

Since Guice 4.2, multibindings support has moved to Guice core. Before that, you need to depend on the guice-multibindings extension. For reference https://github.com/google/guice/wiki/Multibindings

20 months agoInitial cleanup of maven set up in the parents' module
gurkerl83 [Mon, 26 Oct 2020 13:20:51 +0000 (14:20 +0100)] 
Initial cleanup of maven set up in the parents' module

- Increase version of Guava dependency from 22.0 to 27.1-jre.

Note: In an OSGi runtime, Guice version 4.2.3 expects Guava with an exact version of 27.1-jre. For now, higher versions of Guava are not possible.

- Separate version numbers from dependencies and plugins

Following is a description of the purpose of the feature.

New contributors find it difficult to understand the function and intent of different plugins integrated into JClouds.

The primary goal is to simplify and streamline the overall setup.

On closer examination of the integrated plugins you will notice that,

- different plugins are used for the same or a similar goal
- the development activity of used plugins has been terminated
- modified integration requirements through Maven. The development of used plugins is progressing. Versions of the plugins integrated into JClouds are not up to date. Newer plugin versions require an adjustment to how integration into a project is done.

Basically the setup of the plugins used in the Maven project POM was done a long time ago. The project POM file of the JClouds project serves as a parent for all modules in JClouds.

The first step is to consolidate the used plugins.

The same aspects apply to the build profiles used in the project. On closer look these must be considered obsolete. A deconstruction of declared build profiles is aimed at.

In order to support newer runtime environments, for example JDK11 and above, we aim to integrate build profiles.

In the respective build profile the libraries which are no longer contained in the respective target JDK but needed in JClouds are to be integrated.

In the course of this rebuild, a property-based way of declaring the version number of dependencies and plugins will be implemented.

20 months agoSimplify S3 code that uses java-xml-builder (#93)
Jean-Noël Rouvignac [Thu, 21 Jan 2021 12:54:44 +0000 (13:54 +0100)] 
Simplify S3 code that uses java-xml-builder (#93)

* animal sniffer should be on java18, just like `<jdk.version>`

* Only use XMLBuilder's elem() and text() methods to have similar looking code

* Remove unnecessary call to XMLBuilder's up() because the returned value is never used

* Simplify code

* Deduplicate code

* Make the code more explicit by returning the rootBuilder

21 months agoJCLOUDS-1557 - Azure local server support
davidsloan [Tue, 8 Dec 2020 02:14:03 +0000 (02:14 +0000)] 
JCLOUDS-1557 - Azure local server support

Co-authored-by: David Sloan <david.sloan@lenses.io>
22 months agoJCLOUDS-1559: add Charset to Json.fromJson InputStream methods
roded [Fri, 4 Dec 2020 19:56:24 +0000 (21:56 +0200)] 
JCLOUDS-1559: add Charset to Json.fromJson InputStream methods

23 months agoRemove scope declaration from deps management
gurkerl83 [Mon, 26 Oct 2020 00:33:49 +0000 (01:33 +0100)] 
Remove scope declaration from deps management

The default scope of imports is "compile." There is no reason to add this declaration to the GSON import declaration. Also, scope declarations are required to be defined in the main dependency declaration section, not in dependency management, where dependency information gets managed, which is valid across all of its children, e.g., version numbers.

23 months agoLowering the GSON version
gurkerl83 [Mon, 26 Oct 2020 00:22:49 +0000 (01:22 +0100)] 
Lowering the GSON version

Lowering the GSON version from 2.8.6 (latest) to 2.8.5, to make sure no side effects get introduced on a JDK level - for reference https://github.com/google/gson/issues/1601. Another feature is in its making to introduce a conditional build profile to support JDK 11 and above; here, a switch to the latest version of GSON gets provided.

23 months agoIn the final state of this feature, a rebase on Master was executed. In resolving...
gurkerl83 [Sat, 24 Oct 2020 15:48:40 +0000 (17:48 +0200)] 
In the final state of this feature, a rebase on Master was executed. In resolving a merge problem with the Maven project file "JClouds Project," an important instruction got overwritten, to generate test jars for each module. This modification re-adds this ability for all modules. Counter versa, defining this build step repeatedly, e.g., in the api/oauth module, is no longer required. Also, correct a typo, add groupId.

Note: Previously, the maven jar plugin contained a configuration embedded in each module's generated manifest files. The configuration got relocated to the project/bnd.bnd file in a previous commit, and gets handled through the bnd plugin.

23 months agoIn the final state of this feature a rebase on Master was executed. In resolving...
gurkerl83 [Sat, 24 Oct 2020 12:32:04 +0000 (14:32 +0200)] 
In the final state of this feature a rebase on Master was executed. In resolving a merge problem with the Maven project file "JClouds Project", an important change already introduced in Master was overlooked. The library Guice was already updated to the latest version 4.2.3 in Master, and the original version number 3.0 was accidentally added to the Maven project file. This modification removes the version number 3.0 from the configuration.

23 months agoRe-Enable the build for all modules. Increase version of bnd plugin to the latest.
gurkerl83 [Sat, 17 Oct 2020 14:04:22 +0000 (16:04 +0200)] 
Re-Enable the build for all modules. Increase version of bnd plugin to the latest.

23 months agoRemove the OSGi configuration from each module. The approach of defining OSGi configu...
gurkerl83 [Sat, 17 Oct 2020 14:01:26 +0000 (16:01 +0200)] 
Remove the OSGi configuration from each module. The approach of defining OSGi configuration through common properties and serving them to the bundle plugin gets no longer used; instead, OSGi configuration gets defined in each module's dedicated bnd file.

23 months agoOnboard bnd-configuration files, one per module
gurkerl83 [Sat, 17 Oct 2020 13:44:37 +0000 (15:44 +0200)] 
Onboard bnd-configuration files, one per module

23 months agoIntegrate GSON library in Clouds Core Bundle Final
gurkerl83 [Thu, 2 Jul 2020 08:54:28 +0000 (10:54 +0200)] 
Integrate GSON library in Clouds Core Bundle Final

In the last commit (last section of squashed commit), the GSON library was integrated into the JClouds core module using maven-bundle plugins include resource instruction. Building OSGi instruction variables from the respective modules show a weakness when resources such as script builder shell scripts are required to be integrated into the bundle but not provide a dedicated variable declaration for the resource section.

The following commit demonstrates a change in strategy in declaration and integration of OSGi metadata.

- Replace old bundle-plugin with newest bnd-plugin (bundle-plugin uses bnd-plugin internally)
- Move OSGi metadata declarations from a maven variable passing strategy into dedicated bnd.bnd files
+ Cleaner pom files, no bundle packaging
+ Intellisense / Autocomplete support for .bnd files in terms of package exports etc.

For demonstration, the overall OSGi adjustments are limited to project, core, script builder, compute, blob store, and load balancer because most custom OSGi metadata is defined here.

Note: Other modules are currently disabled from build because some feedback is needed first.

Make GSON integration work.
To understand the changes, see the core modules' bnd file. GSON internal packages also define a version. Both already exported and new export declarations are fused. The global JClouds core module exports defined the entire set of GSON packages available.

Some minor modifications were made in the module project; replace maven jar plugin with a minified version of the declaration, outsourced in projects bnd file.

23 months agoReplace embedded and repackaged GSON library
gurkerl83 [Thu, 25 Jun 2020 13:27:15 +0000 (15:27 +0200)] 
Replace embedded and repackaged GSON library

Replace substituted GSON package names with those provided from the vendor.
Reduce OSGi-metadata declaration of core-module because the artificial package org.jclouds.json.gson.internal was removed.
Remove the Gson module its children Gson bundle, and Gson shaded.
Remove duplication conflict and check-style rules due to the removal of the internal Gson module.
Add maven repository where a custom version of the Gson library gets hosted, which exports all packages.

Remove particular repository

Remove the declaration of the repository that serves a custom build GSON version. The build uses GSON in its original form of the vendor, which gets distributed through the standard distribution channel. The identifiers for group, artifact, and version correspond to the latest stable release of GSON.

Integrate GSON library in Clouds Core Bundle

The change contained in the commit puts the GSON library into the classpath of the JClouds core module.
After several tests with Karaf and Karaf JClouds, especially if the Maven identifier matches the original GSON library, there are only a limited number of ways to keep the deployment effort low.

Specifically, Karaf has a set of predefined Maven repositories that can be easily customized. The order in which a particular repository is resolved into the customized GSON library is more difficult. In normal OSGi applications, which do not have such a management function, I imagine this configuration to be more complicated.  Sure, a unique identifier would help, but then we are back to step 1.

Although I honestly don't like to see this kind of approach in a codebase I'm working with, there are not many alternatives to the main aspect of deployment mentioned above.

Maybe the approach can still ease the problem in the short term. In a further mid-term step, however, this problem must be addressed in general.

23 months agoRemove unintended executable permissions
Andrew Gaul [Fri, 9 Oct 2020 14:33:41 +0000 (23:33 +0900)] 
Remove unintended executable permissions

Fixed via:

find -executable -not -type d -name \*.java -exec chmod -x {} \;

2 years agoJCLOUDS-1498: Upgrade to Guice 4.2.3
Andrew Gaul [Sat, 26 Sep 2020 01:34:31 +0000 (10:34 +0900)] 
JCLOUDS-1498: Upgrade to Guice 4.2.3

Release notes:


2 years agoJCLOUDS-1552: Do not attempt to parse empty payload (#82)
Tamas Cservenak [Mon, 21 Sep 2020 13:46:25 +0000 (15:46 +0200)] 
JCLOUDS-1552: Do not attempt to parse empty payload (#82)

2 years agoOptimize MultiBlobInputStream.read()
Andrew Gaul [Sat, 25 Jul 2020 07:39:04 +0000 (16:39 +0900)] 
Optimize MultiBlobInputStream.read()

Previously this allocated a byte array for every call.

2 years agoJCLOUDS-1367: Do not open open InputStream in copyBlob
Andrew Gaul [Sat, 25 Jul 2020 07:34:46 +0000 (16:34 +0900)] 
JCLOUDS-1367: Do not open open InputStream in copyBlob

This avoids an unneeded call to ByteStreams2.toByteArrayAndClose in
getBlob for range requests and elides a large memory allocation.

2 years agoStore transient Blob data with ByteArrayPayload
Andrew Gaul [Sat, 11 Jul 2020 19:53:37 +0000 (04:53 +0900)] 
Store transient Blob data with ByteArrayPayload

This avoids a race condition due to sharing the same Closer instance
and unbounded growth of its Closeable Deque.  References

2 years agoJCLOUDS-1542 follow-up: check whether isAccessible() is already set (#79)
Jean-Noël Rouvignac [Sun, 5 Jul 2020 21:33:07 +0000 (23:33 +0200)] 
JCLOUDS-1542 follow-up: check whether isAccessible() is already set (#79)

AccessibleObject.canAccess() would be much much better,
but this API can only be used from Java 9 onward.

2 years agoJCLOUDS-1542 Java 11 warns of illegal reflective access (#76)
Jean-Noël Rouvignac [Fri, 26 Jun 2020 17:55:32 +0000 (19:55 +0200)] 
JCLOUDS-1542 Java 11 warns of illegal reflective access (#76)

With Java 11, an illegal reflective access is output for the google cloud storage blobstore.

    WARNING: An illegal reflective access operation has occurred
    WARNING: Illegal reflective access by org.jclouds.reflect.Reflection2$1 (file:/.../jclouds-core.jar) to constructor java.lang.String(char[],int,int,java.lang.Void)
    WARNING: Please consider reporting this to the maintainers of org.jclouds.reflect.Reflection2$1
    WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
    WARNING: All illegal access operations will be denied in a future release

Indeed, JClouds calls `setAccessible(true)` on the package protected constructor
Investigating the code, it turns out it is looking for constructors annotated with any of:
* java.beans.ConstructorProperties
* org.jclouds.json.SerializedNames
* com.google.inject.Inject

But `String` being defined in `java.base` module, it is impossible
     that it will be annotated with any of these annotation.

This commit is complementary to JClouds commit db4e4af931ef19f582b85f02efb93e50f1c5d01c .


Do not call `setAccessible(true)` on core java constructors and methods.


For reference, here is the stacktrace of this illegal access warning:

    com.sun.proxy.$Proxy49.authorize(Unknown Source)
    com.sun.proxy.$Proxy54.simpleUpload(Unknown Source)

2 years agoJCLOUDS-1473 add INTELLIGENT_TIERING enum
Sam Ottenhoff [Wed, 24 Jun 2020 15:29:15 +0000 (11:29 -0400)] 

2 years agoDisable doclint during Jenkins build
Andrew Gaul [Wed, 24 Jun 2020 23:37:25 +0000 (08:37 +0900)] 
Disable doclint during Jenkins build

Now that we require Java 8 we do not need this workaround.

2 years agoJCLOUDS-1333: JCLOUDS-1334: JCLOUDS-1470: Require Java 8 and Guava 22
Andrew Gaul [Sun, 14 Jun 2020 02:40:04 +0000 (11:40 +0900)] 
JCLOUDS-1333: JCLOUDS-1334: JCLOUDS-1470: Require Java 8 and Guava 22

This allows compatibility with Guava 29.  Also unwind some older

2 years agoJCLOUDS-1491 Jclouds uses a deprecated version of Guava to support Azure storage
Jean-Noël Rouvignac [Tue, 2 Jun 2020 13:29:02 +0000 (15:29 +0200)] 
JCLOUDS-1491 Jclouds uses a deprecated version of Guava to support Azure storage

DnsNameValidator.java uses a deprecated guava APIs in code that is used
 to support Azure cloud storage. When forcing the use of more recent guava
 versions, the code fails with NoSuchFieldError.

However, CharMatcher.JAVA_LETTER_OR_DIGIT has been removed in guava 26.0,
 and CharMatcher.javaLetterOrDigit() should be used instead since guava
 19.0. Note that CharMatcher.javaLetterOrDigit() was immediately
 deprecated in Guava 26.0, and java.lang.Character.isLetterOrDigit(int)
 should be used instead.

This commit replaces the use of this deprecated API by
 It is no worse than the previous code.

(If I understand correctly, updating the guava version is a challenge due to
dependencies on Apache Karaf anyway)

2 years agoJCLOUDS-912: JCLOUDS-1547: GCS InputStream single-part upload
Andrew Gaul [Sat, 23 May 2020 04:25:24 +0000 (13:25 +0900)] 
JCLOUDS-912: JCLOUDS-1547: GCS InputStream single-part upload

Previously this provider worked around a RestAnnotationProcessor quirk
by using multi-part uploads for InputStream payloads.  Instead work
around the quirk another way which allows a single-part upload.  This
allows inclusion of the Content-MD5 header during object creation.
Backfill tests with both ByteSource and InputStream inputs.

2 years agoJCLOUDS-1546: Support GCS Archive storage class
Andrew Gaul [Mon, 4 May 2020 11:25:53 +0000 (20:25 +0900)] 
JCLOUDS-1546: Support GCS Archive storage class

Also change portable abstraction mapping for Tier.ARCHIVE.

2 years agoJCLOUDS-1543: remove unused imports from FetchBlobMetadataTest.java (#70)
roded [Wed, 22 Apr 2020 07:49:53 +0000 (10:49 +0300)] 
JCLOUDS-1543: remove unused imports from FetchBlobMetadataTest.java (#70)

Co-authored-by: Roded Bahat <roded.bahat@model9.io>
2 years agoFix toolchain setup on jenkins (#68)
Fritz Elfert [Wed, 22 Apr 2020 07:56:36 +0000 (09:56 +0200)] 
Fix toolchain setup on jenkins (#68)

2 years agoJCLOUDS-1543: change FetchBlobMetadata to retain original blob order
Roded Bahat [Tue, 14 Apr 2020 17:17:33 +0000 (20:17 +0300)] 
JCLOUDS-1543: change FetchBlobMetadata to retain original blob order

2 years agoEnable docs in travis build (#69)
Fritz Elfert [Fri, 17 Apr 2020 06:26:50 +0000 (08:26 +0200)] 
Enable docs in travis build (#69)

2 years agoFix javadoc generation on JDK >= 8 (#67)
Fritz Elfert [Thu, 16 Apr 2020 11:23:31 +0000 (13:23 +0200)] 
Fix javadoc generation on JDK >= 8 (#67)

2 years agoHash the content for fs MPU ETag if no xattr.
Timur Alperovich [Wed, 4 Mar 2020 20:14:21 +0000 (12:14 -0800)] 
Hash the content for fs MPU ETag if no xattr.

If there is no extended attribute support in the file system, the blobs
will not have their associated ETags available. In that case, the file
system blob store should rehash the content while producing the combined
blob and return the expected S3-style ETag.

2 years agoJCLOUDS-1541: Add Middle East (Bahrain) region to the AWS EC2 and S3 providers list
ikky888 [Sat, 4 Apr 2020 01:48:01 +0000 (09:48 +0800)] 
JCLOUDS-1541: Add Middle East (Bahrain) region to the AWS EC2 and S3 providers list

2 years agoFix BlobMetadata null size when using ApacheHCHttp module
Xavier BOURGOUIN [Thu, 16 Jan 2020 14:51:58 +0000 (15:51 +0100)] 
Fix BlobMetadata null size when using ApacheHCHttp module

JClouds is apparently exclusively using the Payload object from the HTTP
response to fill in the size of the BlobMetadata (when calling
blobStore.blobMetadata(...) ) - adapt this driver accordingly otherwise
we systematically get null size BlobMetadata out of it.

2 years agoJCLOUDS-1540 - Update Snakeyaml
Colm O hEigeartaigh [Tue, 3 Mar 2020 08:02:04 +0000 (08:02 +0000)] 
JCLOUDS-1540 - Update Snakeyaml

2 years agoJCLOUDS-1533 - Fix upload with SAS token when blob name contains slash (#61)
majaseremet [Mon, 17 Feb 2020 14:28:34 +0000 (15:28 +0100)] 
JCLOUDS-1533 - Fix upload with SAS token when blob name contains slash (#61)

2 years agoJCLOUDS-1538: fix typo in rfc1123SimpleDateFormat (#60)
Ian Springer [Fri, 24 Jan 2020 14:34:50 +0000 (09:34 -0500)] 
JCLOUDS-1538: fix typo in rfc1123SimpleDateFormat (#60)

2 years agoJCLOUDS-1532 - Update SSHJ + JSCH (#57)
Colm O hEigeartaigh [Tue, 3 Dec 2019 16:17:06 +0000 (16:17 +0000)] 
JCLOUDS-1532 - Update SSHJ + JSCH (#57)

2 years agoJCLOUDS-1529: Do not export org.jclouds.json.gson.internal (#56)
Markus Alexander Kuppe [Thu, 28 Nov 2019 09:34:16 +0000 (01:34 -0800)] 
JCLOUDS-1529: Do not export org.jclouds.json.gson.internal (#56)

Do not export packages matching org.jclouds.json.gson.internal*
because it causes a use constraint violation with OSGi between
jclouds-core and jclouds-gson.


2 years agoJCLOUDS-1528 - Use TLS instead of SSL in SSLContext.getInstance (#55)
Colm O hEigeartaigh [Mon, 25 Nov 2019 13:54:48 +0000 (13:54 +0000)] 
JCLOUDS-1528 - Use TLS instead of SSL in SSLContext.getInstance (#55)

2 years agoDowngrade BouncyCastle to 1.60, which works with Oracle JDK 1.7 (#54)
Colm O hEigeartaigh [Mon, 18 Nov 2019 13:54:30 +0000 (13:54 +0000)] 
Downgrade BouncyCastle to 1.60, which works with Oracle JDK 1.7 (#54)

2 years agoJCLOUDS-1526 - Update BouncyCastle dependency (#53)
Colm O hEigeartaigh [Fri, 15 Nov 2019 15:03:40 +0000 (15:03 +0000)] 
JCLOUDS-1526 - Update BouncyCastle dependency (#53)

2 years agoJCLOUDS-1525 - Update xmlbuilder dependency (#52)
Colm O hEigeartaigh [Fri, 15 Nov 2019 15:03:28 +0000 (15:03 +0000)] 
JCLOUDS-1525 - Update xmlbuilder dependency (#52)

2 years agoFix TOCTOU issue when getting blob during removal
Andrew Gaul [Sat, 9 Nov 2019 02:25:24 +0000 (11:25 +0900)] 
Fix TOCTOU issue when getting blob during removal

Fixes gaul/s3proxy#318.

2 years agoFix infinite socket timeout when using ApacheHCHttpCommandExecutorServiceModule ...
Xavier BOURGOUIN [Wed, 23 Oct 2019 09:44:58 +0000 (11:44 +0200)] 
Fix infinite socket timeout when using ApacheHCHttpCommandExecutorServiceModule (#51)

Because the Java type BasicHttpParams wasn't matching the one returned
by provider "newBasicHttpParams" (which is returning a HttpParams type), it was configuring the Apache HTTP client with default settings (including connection and socket timeout), ignoring the ones of JClouds which were must safer in this regard (JCloudsones are currently 60sec for both, while Apache HC ones are -1, so infinite). It also prevented to override those default/infinite timeout settings with JClouds ones.

2 years agoNext development version 2.3.0-SNAPSHOT
Ignasi Barrera [Sun, 13 Oct 2019 08:54:33 +0000 (10:54 +0200)] 
Next development version 2.3.0-SNAPSHOT

2 years agoApache jclouds 2.2.0-rc1 release
Ignasi Barrera [Sun, 13 Oct 2019 08:51:16 +0000 (10:51 +0200)] 
Apache jclouds 2.2.0-rc1 release

2 years agoJCLOUDS-1520: change UntrustedSSLContextSupplier to return the same SSLContext (#49)
roded [Wed, 16 Oct 2019 07:48:47 +0000 (10:48 +0300)] 
JCLOUDS-1520: change UntrustedSSLContextSupplier to return the same SSLContext (#49)

Using the same SSLContext prevents consistent cache misses on the JVM's KeepAliveCache
when attempting to reuse TLS connections.

2 years agoAdd TravisCI file for pull requests (#50)
Ignasi Barrera [Mon, 14 Oct 2019 08:25:06 +0000 (10:25 +0200)] 
Add TravisCI file for pull requests (#50)

* Add TravisCI file for pull requests

* Fix env var config

* Oracle JDK not available in the default travis env

* Add license header

* Do not use Maven toolchains

* Less verbose build

* Further reduce output

2 years agoEtag is not supported in OSX
Ignasi Barrera [Sun, 13 Oct 2019 08:32:30 +0000 (10:32 +0200)] 
Etag is not supported in OSX

2 years agoFix null content-length header on HEAD requests
Xavier BOURGOUIN [Thu, 10 Oct 2019 15:40:29 +0000 (17:40 +0200)] 
Fix null content-length header on HEAD requests


3 years agoUpdate README copyright dates
Andrew Phillips [Sun, 1 Sep 2019 17:39:34 +0000 (13:39 -0400)] 
Update README copyright dates

3 years agoAdd OS disk type in template options (#46)
Simone Locci [Wed, 18 Sep 2019 14:34:34 +0000 (16:34 +0200)] 
Add OS disk type in template options (#46)

* Add OS disk type in template options

* Fix review and code style

3 years agoAdd azure disk sku (#45)
Simone Locci [Tue, 17 Sep 2019 15:48:32 +0000 (17:48 +0200)] 
Add azure disk sku (#45)

* Add azure disk SKU

* Add tests

* Fix review adding a disk type enum

* Fix review using storage account type enum

3 years agoJCLOUDS-1512 - Use SecureRandom in Sha512Crypt
Colm O hEigeartaigh [Thu, 22 Aug 2019 09:12:40 +0000 (10:12 +0100)] 
JCLOUDS-1512 - Use SecureRandom in Sha512Crypt

3 years agoJCLOUDS-1510: ParseSax use charset constant for all String creations
Roded Bahat [Mon, 12 Aug 2019 15:46:56 +0000 (18:46 +0300)] 
JCLOUDS-1510: ParseSax use charset constant for all String creations

This commit prevents the convertStreamToStringAndParse method from
failing XML validation on environments in which the default charset is
not compatible with UTF-8.

3 years agoAdd tag support to azure disks
Simone Locci [Tue, 6 Aug 2019 15:34:19 +0000 (17:34 +0200)] 
Add tag support to azure disks

3 years agoJCLOUDS-1509: read AWS response data with the UTF-8 charset explicitly
Roded Bahat [Thu, 8 Aug 2019 12:32:25 +0000 (15:32 +0300)] 
JCLOUDS-1509: read AWS response data with the UTF-8 charset explicitly

AWS response data is encoded in UTF-8. Creating a String from said data
using the JVM's default charset results in incorrect encoding on
environments in which the JVM's default charset is not UTF-8.


3 years agoJCLOUDS-1500: Update gson to 2.8.5 (#29)
Olaf Flebbe [Wed, 3 Jul 2019 07:11:26 +0000 (09:11 +0200)] 
JCLOUDS-1500: Update gson to 2.8.5 (#29)

3 years agoAdd new Azure Dubai region (#40)
Sergi Castro [Mon, 1 Jul 2019 21:16:12 +0000 (23:16 +0200)] 
Add new Azure Dubai region (#40)

3 years agoAdd OSGi exports to jclouds-gson (#38)
Ignasi Barrera [Fri, 21 Jun 2019 08:38:36 +0000 (10:38 +0200)] 
Add OSGi exports to jclouds-gson (#38)

* Add OSGi exports to jclouds-gson

* Proper generation of OSGi directives in the manifest file

* Fixes

* Remove commented bits

3 years agoDo not tie duplicate class finder to a specific version of jclouds
Ignasi Barrera [Thu, 20 Jun 2019 09:25:12 +0000 (11:25 +0200)] 
Do not tie duplicate class finder to a specific version of jclouds

3 years agoPlugin config in pluginManagement for proper reuse in child projects (#39)
Ignasi Barrera [Tue, 18 Jun 2019 10:08:59 +0000 (12:08 +0200)] 
Plugin config in pluginManagement for proper reuse in child projects (#39)

3 years agoJCLOUDS-1166: Relocate the gson internal packge to be able to keep using it (#35)
Ignasi Barrera [Mon, 17 Jun 2019 15:43:29 +0000 (17:43 +0200)] 
JCLOUDS-1166: Relocate the gson internal packge to be able to keep using it (#35)

* JCLOUDS-1166: Relocate the gson internal packge to be able to keep using it

* Fixes

* Fix import order and shaded jar

* More fixes

* Proper dependency configuration

* Fix typos

* Bring back duplicate exclusions

3 years agoProper exception to catch for methods with unchecked exception
Ignasi Barrera [Sat, 15 Jun 2019 08:45:04 +0000 (10:45 +0200)] 
Proper exception to catch for methods with unchecked exception

3 years agoFix type of location coordinates (#36)
Ignasi Barrera [Sat, 15 Jun 2019 07:01:13 +0000 (09:01 +0200)] 
Fix type of location coordinates (#36)

3 years agoJCLOUDS-1428: Support for SAS token based Authentication for Azure Blob Storage
Aliaksandra Kharushka [Mon, 27 May 2019 13:05:12 +0000 (15:05 +0200)] 
JCLOUDS-1428: Support for SAS token based Authentication for Azure Blob Storage

removed ACL check for SAS Auth AzureBlobs

3 years agoImplements listAll operation for VirtualNetworkAPI (#33)
Daniel Estévez [Wed, 22 May 2019 07:12:58 +0000 (03:12 -0400)] 
Implements listAll operation for VirtualNetworkAPI (#33)

* Implements listAll operation for VirtualNetworkAPI

Fixes test with proper method call

* Fixes resourcegroup param is now nullable

3 years agoConvert a handful of HTTP URLs to HTTPS
Andrew Gaul [Tue, 21 May 2019 11:52:22 +0000 (20:52 +0900)] 
Convert a handful of HTTP URLs to HTTPS

3 years agoImplements listAll method for LoadBalancersAPI (#32)
Daniel Estévez [Tue, 21 May 2019 09:49:11 +0000 (05:49 -0400)] 
Implements listAll method for LoadBalancersAPI (#32)

3 years agoImplements listAll method in NetworkSecurityGroupApi (#31)
Daniel Estévez [Tue, 21 May 2019 09:48:07 +0000 (05:48 -0400)] 
Implements listAll method in NetworkSecurityGroupApi (#31)

* Implements listAll method in NetworkSecurityGroupApi

* Adds Mock and Live tests for new method

3 years agoAdds methods listAll and listByLocation to VirtualMachineAPI (#21)
Daniel Estévez [Fri, 17 May 2019 07:41:38 +0000 (03:41 -0400)] 
Adds methods listAll and listByLocation to VirtualMachineAPI (#21)

* Adds methods listAll and listByLocation to VirtualMachineAPI

Adds Mock tests fixes

* Minor comments

* Overrides test to avoid case sensitive comparation

* Adds comment to justify overriding base test method

* Enables list by location to improve performance in listNodes abstraction

* Returns all available VMs if no regions are specified

3 years agoChecks provisioning state in Rule resource instead of Group (#30)
Daniel Estévez [Fri, 17 May 2019 06:59:01 +0000 (02:59 -0400)] 
Checks provisioning state in Rule resource instead of Group (#30)

* Checks provisioning state in Rule resource instead of Group

* comments by @nacx to proper check and delete rules

* Fixes log message deleting rule

3 years agoAdd ARM architecture to ec2 image and the related instance types
Sergi Castro [Sat, 11 May 2019 08:32:46 +0000 (10:32 +0200)] 
Add ARM architecture to ec2 image and the related instance types

3 years agoJCLOUDS-1497: Fix checkstyle-suppressions for jcloud-labs (#27)
Olaf Flebbe [Tue, 7 May 2019 09:49:54 +0000 (11:49 +0200)] 
JCLOUDS-1497: Fix checkstyle-suppressions for jcloud-labs (#27)

* Fix NoWhitespaceBefore Checkstyle Violation

* checkstyle updates: remove suppressionsfilter from checkstyle.xml

* suppressions now done in maven-checkstyle-plugin

3 years agoJCLOUDS-1499: Disable sonatype snapshot repository for plugins (#28)
Olaf Flebbe [Tue, 7 May 2019 08:21:03 +0000 (10:21 +0200)] 
JCLOUDS-1499: Disable sonatype snapshot repository for plugins (#28)

3 years agoJCLOUDS-847: Poor upload performance for putBlob
Dori Polotsky [Mon, 22 Apr 2019 19:55:09 +0000 (22:55 +0300)] 
JCLOUDS-847: Poor upload performance for putBlob

This change improves the performance of writing to sockets with the
default Java URL connection HTTP client, by enlarging the buffer used
for socket writes from an implicit hard-coded 4KB / 8KB buffer to a
configurable 32KB buffer.

The buffer size is now controlled by the following property with the
following default value:

jclouds.output-socket-buffer-size: 32768

The implementation is based on a variant of ByteStreams.copy (written as
ByteStreams2.copy) which accepts the buffer size as an argument, unlike
the original Guava code that uses a hard-coded size.

The change was done directly within the loop that copies the input
stream to the output stream, and not by wrapping a BufferedOutputStream
around the existing output stream, in order to avoid copying the payload

On some platforms this change can improve both the putBlob throughput
and the total CPU consumption.

3 years agoJCLOUDS-1496: Update maven-compiler-plugin for increased JDK compatibility (#25)
Olaf Flebbe [Wed, 24 Apr 2019 14:12:45 +0000 (16:12 +0200)] 
JCLOUDS-1496: Update maven-compiler-plugin for increased JDK compatibility (#25)

* JCLOUDS-1496: Update maven-compiler-plugin for increased JDK compatibility

* increase maven-compiler-plugin version

* A space change to trigger jenkins again

* Another space change to trigger jenkins again

3 years agoJCLOUDS-1495: maven plugins are not correctly referred to (#24)
Olaf Flebbe [Thu, 11 Apr 2019 02:54:09 +0000 (04:54 +0200)] 
JCLOUDS-1495: maven plugins are not correctly referred to (#24)

3 years agoJCLOUDS-1494: Add S3 Deep Archive tier
Andrew Gaul [Sat, 6 Apr 2019 09:42:03 +0000 (18:42 +0900)] 
JCLOUDS-1494: Add S3 Deep Archive tier

Also test Glacier tier now that Amazon allows creating objects with
this storage class.