The beauty of Guice and jclouds is that you should be able to extend
it by providing custom implementations for many things. You just have
to pass a Guice module with the custom bindings then creating the
context.

You could have something like:

class CustomBindings extends AbstractModule {
   @Override
   public void configure() {
      // Your custom bindings here, to provide custom implementations
for jclouds interfaces
   }
}

BlobStoreContext context = ContextBuilder.newBuilder("filesystem")
   .overrides(properties)
   .modules(ImmutableSet.of(new CustomBindings(), <other modules>))
   .buildView(BlobStoreContext.class);

When it comes to getting stuff from Guice, you can request the classes
to the Guice injector. The jclouds Context base class provides utility
methods to access that. For example:

context.utils().injector().getInstance(RequestedObjectClass.class);


HTH!

I.


On Fri, 17 Aug 2018 at 11:04, Meyer, Carsten <carsten.me...@zeiss.com> wrote:
>
> Hi Andrew,
>
> thanks for your fast response!
>
>
>     On Thu, Aug 16, 2018 at 10:38:15AM +0000, Meyer, Carsten wrote:
>     > We are trying to extend the Blob Store "filesystem" in such a way that 
> Container are tied to a filesystem location instead of being placed a subdir 
> of the basedir.
>     >
>     > Our first approach was based on symbolic links. Here, each container is 
> a symblic link pointing from the basedir subdirectory to the intended target. 
> The advantage of this approach is that it is transparent to jclouds. 
> Unfortunately, it is rather tricky to administer in Windows OS (the unix 
> approach of symbolic links is straight-fowrward). Since we are running under 
> Windows as well as Unix, this approach is not feasible.
>
>     I have little background in Windows but does `mklink /d src dst` solve
>     this?
>
> We can create symbolic links in this way, that works fine. Our problem is 
> that symbolic links in Windows have a complexity that is higher than in Unix 
> systems. Windows requires certain rights foe users to be able to create 
> symbolic links. There is also a difference between remote and local links. 
> Since our application is running on premise at the customer, administration 
> of this complexity is not feasible. Also, there are still JDK bugs concering 
> symbolic links under Windows but we were able to work around them.
>
>     > Our alternative right implements the handling of the 
> container/filesystem relationship.
>     >
>     > We extended "FilesystemStorageStrategyImpl" by overriding the method 
> "buildPathStartingFromBaseDir" in such a way that that path is built with the 
> right container integration. The methods "deleteContainer" and 
> "createContainer" are not needed in our use case.
>
>     I wonder if creating a filesystem BlobStore per container could also
>     address your use case?  These instances have little overhead and may
>     give you the control you want.
>
> We created that blob store and it basically works fine.
>
>     > The implementation is provided by our own "BlobStoreContextModul" so 
> that within our application we only need to change the Provider ID.
>     >
>     > BlobStoreContext context = 
> ContextBuilder.newBuilder("containerperfilesystem")
>     >         .overrides(properties)
>     >         .buildView(BlobStoreContext.class);
>     >
>     > Unfortunately we do not have experience with Guice, our application is 
> Spring-based, and we have two questions:
>     >
>     > 1) Can the binding that is defined in the BlobStoreContextModul be 
> overriden with our own strategy implementation, e.g. through the 
> ContextBuilder?
>
>     With the caveat that these are not public or stable interfaces, you
>     should be able to extend FilesystemBlobStoreContextModule with a
>     configure method which stubs in your strategy class.  Then override the
>     builder via:
>
>         ContextBuilder.newBuilder("filesystem")
>             .defaultModule(CustomStrategy.class)
>             .build();
>
> So every Java class can be inserted via ."defaultModule()" - or maybe even 
> instances?
> Currently (2.1.0) I cannot see this method in the ContextBuilder.
> Or am I misunderstanding something?
>
>     > 2) Since our application is spring-based we are looking for a clean way 
> to inject our own Container-Filesystem-Configuration from our application 
> into the Guice binding or have the Guice object accessible from our 
> application. Is this possible?
>
>     Sorry I cannot help with Spring issues.
>
> Sorry, but the question was misleading.
> Since our application is non-guice-based we are looking for a clean way to 
> inject our own Container Configuration from our application into the Guice 
> binding or have the Guice object accessible from our application. Is this 
> possible?
>
> Thanks again and best regards,
> Carsten
>
>

Reply via email to