Governator is a library of extensions and utilities that enhance Google Guice to provide: classpath scanning and automatic binding, lifecycle management, configuration to field mapping, field validation and parallelized object warmup.

Overview

Governator

NetflixOSS Lifecycle

DESCRIPTION

Governator is a library of extensions and utilities that enhance Google Guice to provide injector lifecycle and well as support for object lifecycle via @PostConstruct and @PreDestroy.

DETAILS

Please see the doc at https://github.com/Netflix/governator/wiki

BUILDING

Governator is built via Gradle (http://www.gradle.org). To build from the command line: ./gradlew build

ARTIFACTS

Governator binaries are published to Maven Central. Please see the docs for details.

AUTHOR

Jordan Zimmerman (mailto:[email protected])

LICENSE

Copyright 2012 Netflix, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Comments
  • Can't use LifecycleManager in v1.13.4

    Can't use LifecycleManager in v1.13.4

    When we upgraded from 1.12.13 to 1.13.4 we can't create the injector due to this exception

    1) Explicit bindings are required and com.netflix.governator.LifecycleManager is not explicitly bound.
      while locating com.netflix.governator.LifecycleManager
        for parameter 0 at com.netflix.governator.LifecycleListenerModule$LifecycleListenerProvisionListener.initialize(LifecycleListenerModule.java:43)
      at com.netflix.governator.LifecycleListenerModule$LifecycleListenerProvisionListener.initialize(LifecycleListenerModule.java:43)
      at com.netflix.governator.LifecycleListenerModule.configure(LifecycleListenerModule.java:24)
    1 error
        at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
        at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
        at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:226)
        at com.netflix.governator.guice.LifecycleInjector.createChildInjector(LifecycleInjector.java:327)
        at com.netflix.governator.guice.LifecycleInjector.createInjector(LifecycleInjector.java:399)
        at com.netflix.governator.guice.LifecycleInjector.createInjector(LifecycleInjector.java:348)
    

    We tracked this bug to start at 1.12.15 (1.12.14 is messed up - lots of compilation errors).

    opened by asafm 9
  • Problem with AutoBindSingleton and Karyon/Jersey

    Problem with AutoBindSingleton and Karyon/Jersey

    Not sure if this belongs here or in Karyon or elsewhere...

    When I try to use @AutoBindSingleton with multibindings to achieve plugin style auto discovery of things, I'm getting binding errors.

    INFO: Initiating Jersey application, version 'Jersey: 1.17.1 02/28/2013 03:28 PM'
    Oct 28, 2013 1:05:36 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory getComponentProvider
    SEVERE: Cannot bind com.xxx.MyResource
    com.google.inject.ConfigurationException: Guice configuration errors:
    
    1) Unable to create binding for java.util.Set<com.xxx.features.Feature>. It was already configured on one or more child injectors or private modules
        bound at com.netflix.governator.guice.InternalAutoBindModule.bindAutoBindSingleton(InternalAutoBindModule.java:196)
      If it was in a PrivateModule, did you forget to expose the binding?
      while locating java.util.Set<com.xxx.features.Feature>
        for field at com.xxx.MyResource.feature(MyResource.java:53)
      while locating com.xxx.MyResource
    
    1 error
        at com.google.inject.internal.InjectorImpl.getBinding(InjectorImpl.java:150)
        at com.google.inject.internal.InjectorImpl.getBinding(InjectorImpl.java:66)
        at com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory.getComponentProvider(GuiceComponentProviderFactory.java:136)
        at com.sun.jersey.server.impl.component.IoCResourceFactory.getComponentProvider(IoCResourceFactory.java:76)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceComponentProvider(WebApplicationImpl.java:579)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:657)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:652)
        at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:124)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1331)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168)
        at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774)
        at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770)
        at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)
        at com.sun.jersey.guice.spi.container.servlet.GuiceContainer.initiate(GuiceContainer.java:121)
        at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319)
        at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
        at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
        at javax.servlet.GenericServlet.init(GenericServlet.java:241)
        at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:117)
        at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)
        at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)
        at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)
        at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
        at org.mortbay.jetty.Server.doStart(Server.java:224)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at runjettyrun.Bootstrap.main(Bootstrap.java:97)
    

    My best guess is that MyResource is being internally bound by Governator since it depends on my auto-injected stuff, so when it gets to the GuiceComponent, it has already been bound.

    Anyone hit this before? Are there known workarounds, or maybe I'm just missing some config?

    opened by mumrah 8
  • Configuring multiple instances of same object.

    Configuring multiple instances of same object.

    Say I have a cache implementation with a number of configuration parameters. My application may have 5 instances of this cache used for different purposes. I want all 5 caches to be independently configurable.

    This seems like a use case right in Governator's sweet spot, but its not explicitly called out in the documentation. What is the recommended way to do this?

    Thanks.

    opened by dsiegel 8
  • Support for JDK ServiceLoader

    Support for JDK ServiceLoader

    Integrate the JDK ServiceLoader with Guice making it possible to inject a Set of services and allowing member injection on these services. Two modes will be supported.

    1. Eager loading of services at startup with support for multibinding so additional bindings for services can be added outside of the ServiceLoader
    2. Lazy loading of services until Set is injected but without allowing for additional bindings to be added using multibindings

    Example,

    Eager binding,

    injectorBuilder.withAdditionalModules(new ServiceLoaderModule() {
        void configure() {
            // Instantiate and load services of type MyService.  
            bindServices(MyService.class).usingMultibinding();
            // This is legal,
            Multibinder.newSetBinder(binder(), MyService.class).addBinding().to(MyServiceImpl.class);
        }
    });
    

    Lazy binding

    injectorBuilder.withAdditionalModules(new ServiceLoaderModule() {
        void configure() {
            bindServices(MyService.class);
            // This is illegal now because the above line fully implements the binding for Set<MyService>
            // Multibinder.newSetBinder(binder(), MyService.class).addBinding().to(MyServiceImpl.class);
        }
    });
    

    Injecting

    public class SomeApplicationClass {
        @Inject
        public SomeApplicationClass(Set<MyService> services) {  
    
        }
    }
    

    Example service,

    public class MyServiceImpl Implements MyService {
        public MyServiceImpl() {
        }
    
        // This injection will be done when Set<MyService> is first injected
        @Inject
        public voidSetSomeDependency(SomeDependency dep) {  
        }
    }
    
    opened by elandau 7
  • Bump Gradle and Nebula versions to latest

    Bump Gradle and Nebula versions to latest

    In order to show the necessity of https://github.com/Netflix/governator/pull/397 , I tried building governator with Java11. I was unable to do so because the version string parser couldn't parse JDK11 version:

    * What went wrong:
    Could not determine java version from '11.0.2'.
    
    opened by carl-mastrangelo 6
  • Adding concept of an application runner

    Adding concept of an application runner

    This pull requests adds the concept of an application runner that will handle the runtime lifecycle of an entire application (i.e starting LifecycleManager, waiting for the application to exit, closing LifecycleManager) as part of the LifecycleInjector bootstrapping and allow for much simpler integration with the container in which Governator is used (i.e Standalone, Jetty, Tomcat, …). This method is an alternative to having to get the instance of LifecycleManager and calling start() and close() outside of governator. A specific runner implementation is implemented as a BootstrapModule which must provide a binding to LifecycleRunner.

    Example standalone application,

    public class Application {
        @Inject
        public Application(@Main List<String> args) {
        }
    
        public static void main(String[] args) {
            LifecycleInjector.builder()
                .withAdditionalBootstrapModules(
                    StandaloneRunnerModule.builder()
                        .withTerminateEvent(new SelfDestructingTerminationEvent(10, TimeUnit.SECONDS))
                        .withArgs(args)
                        .withMainClass(Application.class)
                        .build())
                .build();  // Calling build will trigger creating the runner
        }
    }
    

    I also prototyped a simple Jetty based runner and would like to add it as a sub project but governor has not been set up for sub projects yet. Any suggesting for how to proceed would be greatly appreciated.

    A Jetty based hello world app would look like this

    @Path("/")
    public class HelloWorldWebApp {
    
        public static void main(String[] args) {
            LifecycleInjector.builder()
                .withModules(new JerseyServletModule() {
                    @Override
                    protected void configureServlets() {
                        bind(HelloWorldWebApp.class);
                        bind(GuiceContainer.class).asEagerSingleton();
                        serve("/*").with(GuiceContainer.class);
                    }
                })
                .withAdditionalBootstrapModules(new JettyRunnerModule())
                .build();
        }
    
        @GET
        public String hello() {
            return "hello";
        }
    }
    
    opened by elandau 6
  • Clases created using @Provides or providers aren't part of lifecycle

    Clases created using @Provides or providers aren't part of lifecycle

    Guice doesn't consider these classes as "injected", so LifecycleManager isn't made aware of them.

    Not necessarily a bug, but might not be behavior people expect.

    For singleton objects that need warmup / preDestroy, they can be manually added the LifecycleManager as a workaround it seems.

    opened by danchia 6
  • Auto Discovery of Guice Modules

    Auto Discovery of Guice Modules

    We have a custom annotation that let's us declare our module dependencies. At startup time, we search for these annotations and install the modules in our injector. It would be very helpful if Governator had something functionally similar.

    Here is an example:

    @DependsOn({
       SomeGuiceModule.class,
       AnotherGuiceModule.class,
    });
    class MyModule extends AbstractModule { ... } 
    
    opened by shahab53 6
  • Option to discard bootstrap injector

    Option to discard bootstrap injector

    Using child injectors can be problematic in certain situations where the injector must be injected (usually part of framework code with dynamic class loading) resulting in the wrong injector being injected. While there are some workarounds to this problem they are not obvious and have issues of their own. This pull request make it possible to have the LifecycleInjector discard the bootstrap injector thereby making the injector returned by createInjector() a root injector.

    opened by elandau 4
  • ArchaiusConfigurationProvider owns all properties even they are not defined.

    ArchaiusConfigurationProvider owns all properties even they are not defined.

    When I use CompositeConfigurationProvider such as the following code:

    binder.bindConfigurationProvider().toInstance(
                                                    new CompositeConfigurationProvider(
                                                            ArchaiusConfigurationProvider.builder().build(),
                                                            new PropertiesConfigurationProvider(properties)));
    

    ArchaiusConfigurationProvider owns all properties even they are not defined. If the property is not defined in Archaius, it should fall back to other configuration provider chained above.

    The temporary solution can be the following:

    ConfigurationOwnershipPolicy ownershipPolicy = new ConfigurationOwnershipPolicy() {
                                                @Override
                                                public boolean has(ConfigurationKey key, Map<String, String> variableValues) {
                                                    return !properties.containsKey(key.getKey(variableValues));
                                                }
                                            };
    

    and hook up the above ownershipPolicy with ArchiausConfigurationProvider at withOwnershipPolicy.

    bug 
    opened by metacret 4
  • Support for injection via @Resource annotation

    Support for injection via @Resource annotation

    Please add support for injection via @Resource annotation: @Resource public void setResource(Jsr250Resource resource) { this.resource = resource; }

    With this feature Governator will be fully JSR-250 compliant and can fully replace old Mycila-Guice project.

    You can see implementation example in Mycila-Guice project: com.mycila.inject.jsr250.Jsr250KeyProvider

    I've tried to combine Mycila-Guice and Governator with:

    injector = LifecycleInjector.builder().withBootstrapModule(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.install(Jsr250.newJsr250Module()); } }).withModules(allModules).inStage(Stage.PRODUCTION).createInjector();

    But in this case @PostConstruct methods called twice :(

    opened by alexey-krylov 4
  • Improve GRADLE build Performance

    Improve GRADLE build Performance

    Parallel builds. This project contains multiple modules. Parallel builds can improve the build speed by executing tasks in parallel. We can enable this feature by setting org.gradle.parallel=true.

    File system watching. Since Gradle 6.5, File system watching was introduced which can help to avoid unnecessary I/O. This feature is the default since 7.0. For an older version, we can enable this feature by setting org.gradle.vfs.watch=true.

    Configuration on demand. Configuration on demand tells Gradle to configure modules that only are relevant to the requested tasks instead of configuring all of them. We can enable this feature by setting org.gradle.configureondemand=true.

    gradle caching. Shared caches can reduce the number of tasks you need to execute by reusing outputs already generated elsewhere. This can significantly decrease build times. We can enable this feature by setting org.gradle.caching=true.

    ===================== If there are any inappropriate modifications in this PR, please give me a reply and I will change them.

    opened by shisheng-1 0
  • NPE in LifecycleModule$LifecycleProvisionListener.onStopped

    NPE in LifecycleModule$LifecycleProvisionListener.onStopped

    When LifecycleInjectorCreator.createInjector is failed, there is attempt to close preDestroyMonitor. But it may not be initialized yet, it is causing NPE to be logged.

    Suggestion is to check preDestroyMonitor for null before calling close() on it or log warn instead of error with stacktrace.

    java.lang.NullPointerException: null
    	at com.netflix.governator.LifecycleModule$LifecycleProvisionListener.onStopped(LifecycleModule.java:136) ~[governator-core-1.17.7.jar]
    	at com.netflix.governator.SafeLifecycleListener.onStopped(SafeLifecycleListener.java:58) ~[governator-core-1.17.7.jar]
    	at com.netflix.governator.LifecycleManager.notifyStartFailed(LifecycleManager.java:118) ~[governator-core-1.17.7.jar]
    	at com.netflix.governator.LifecycleInjectorCreator.createInjector(LifecycleInjectorCreator.java:131) ~[governator-core-1.17.7.jar]
    	at com.netflix.governator.LifecycleInjectorCreator.createInjector(LifecycleInjectorCreator.java:38) ~[governator-core-1.17.7.jar]
    	at com.netflix.governator.InjectorBuilder.createInjector(InjectorBuilder.java:209) ~[governator-core-1.17.7.jar]
    	at com.netflix.governator.InjectorBuilder.createInjector(InjectorBuilder.java:223) ~[governator-core-1.17.7.jar]
    
    opened by pmezrin1 0
  • Updated wiki's content according to the latest release

    Updated wiki's content according to the latest release

    Please update wiki's content according to the latest release .e.g

    https://github.com/Netflix/governator/wiki/Module-Dependencies

    LifecycleInjector.builder()
       .withAdditionalModuleClasses(ApplicationModule.class)
       .build().createInjector();
    

    withAdditionalModuleClasses() has been deprecated

    https://github.com/Netflix/governator/wiki/Getting-Started

    LifecycleManager   manager = injector.getInstance(LifecycleManager.class);
    manager.start();
    

    Method LifecycleManager ::start() has been removed or renamed

    opened by ehayik 0
  • .travis.yml: The 'sudo' tag is now deprecated in Travis CI

    .travis.yml: The 'sudo' tag is now deprecated in Travis CI

    opened by cclauss 0
Releases(v1.17.12)
  • v1.17.12(Apr 19, 2021)

    Avoids depending on com.google.inject.internal.CircularDependencyProxy explicitly. Instead only use it if the class can be found at runtime.

    This will make it easier for folks looking to upgrade the Guice version.

    Source code(tar.gz)
    Source code(zip)
  • v1.17.11(Jan 6, 2021)

  • 1.17.10(Dec 4, 2019)

  • v1.17.9(Oct 28, 2019)

  • v1.17.8(Jun 29, 2019)

  • v1.17.7(May 1, 2019)

    Instances provisioned by Guice using assisted injection that also declare lifecycle methods (such as @PreDestroy annotated methods or implement AutoCloseable) are not handled correctly. This bugfix release introduces specific handling of the NO_SCOPE scope built into Guice, to ensure that associated instances using lifecycle methods are handled correctly.

    Source code(tar.gz)
    Source code(zip)
  • v1.17.6(Apr 26, 2019)

    fixes a memory leak caused by unscoped instances injected via Provider. The situation commonly occurs when a provider is declared for a type that implements AutoCloseable or is annotated with '@PreDestroy'. At runtime, the injected instances are bound with 'no scope' by Guice, leading to a large number of cleanup actions pointing to potentially the same object.

    Source code(tar.gz)
    Source code(zip)
  • v1.17.5(Feb 21, 2018)

    #348 Change Grapher#graph roots check to be isEmpty instead of null #375 Log info message after injector created successfully #378 use release version of spock #379 update to the latest gradle and nebula versions

    Source code(tar.gz)
    Source code(zip)
  • v1.17.3(Jun 12, 2017)

  • v1.17.2(May 22, 2017)

  • v1.17.1(May 15, 2017)

  • v1.17.0(May 2, 2017)

  • v1.16.0(Mar 29, 2017)

  • v1.15.11(Feb 3, 2017)

    predestroy ordering can happen out-of-order with combinations of eager singletons and non-eager singletons; the problem has been addressed in this release.

    Source code(tar.gz)
    Source code(zip)
  • v1.15.11-rc.2(Feb 2, 2017)

  • v1.15.11-rc.1(Feb 1, 2017)

    predestroy ordering can happen out-of-order with combinations of eager singletons and non-eager singletons; the problem has been addressed in this release.

    Source code(tar.gz)
    Source code(zip)
  • v1.15.10(Nov 30, 2016)

  • v1.15.9(Nov 16, 2016)

  • v1.15.8(Nov 15, 2016)

  • v1.15.7(Nov 2, 2016)

  • v1.15.6(Oct 25, 2016)

  • v1.15.5(Oct 20, 2016)

  • v1.15.4(Oct 19, 2016)

    • More aspects of JettyModule configurable
    • Include class name in class path scanning errors
    • InjectorBuilder API improvements for iterating all elements
    • Include PostConstruct time in provision metrics
    • Fix memory leaks in SimpleProvisionMetrics
    Source code(tar.gz)
    Source code(zip)
  • v1.15.3(Oct 17, 2016)

    • No more Jersey class path scanning in GovernatorJerseySupportModule
    • Fix java8 and invokedynamic issues
    • Fix ScanningModuleBuilder module dedup
    • JettyConfig archaius2 integration
    • Add ability to set Jetty context path via JettyConfig
    Source code(tar.gz)
    Source code(zip)
  • v1.15.2(Oct 6, 2016)

    internal class LifecycleMethods lost three public methods in the 1.15 release; these have been restored with 1.15.2 for compatibility with external callers

    Source code(tar.gz)
    Source code(zip)
  • v1.15.1(Oct 5, 2016)

  • v1.15.0(Oct 4, 2016)

    Tuning with an eye towards use of short-lived scopes. Changes based on a test load of 200 threads injecting scoped instances with a ttl between 0-500ms; see PreDestroyStressTest. Some of the more significant improvements:

    'invoke dynamic' invocation of lifecycle methods and configuration fields reduced lock contention in PreDestroyMonitor reduced partition contention in LifecycleManager.objectStates caching of @PreDestroy parsing in LifecycleManager caching of @Resource detection in LifecycleMethods Also includes a bug fix to allow use of 'Binder.requireExplicitBindings()' feature and bumped Guice dependency to 4.1.0

    Update - added bug fix for nested LifecycleListener notification

    Source code(tar.gz)
    Source code(zip)
  • v1.14.4(Sep 29, 2016)

  • v1.14.3(Sep 28, 2016)

Owner
Netflix, Inc.
Netflix Open Source Platform
Netflix, Inc.
Lightweight dependency injection for Java and Android (JSR-330)

About Feather Feather is an ultra-lightweight dependency injection (JSR-330) library for Java and Android. Dependency injection frameworks are often p

Zsolt Herpai 341 Nov 29, 2022
A fast dependency injector for Android and Java.

Dagger A fast dependency injector for Java and Android. Dagger is a compile-time framework for dependency injection. It uses no reflection or runtime

Google 16.9k Dec 30, 2022
Xposed Injector by Saygus, and project fixed by Spring Musk

Xposed Injector Xposed Injector to mod games externally. Made by Saygus, and project fixed by Spring Musk. Spring Musk requested me to upload his proj

Menu Modder 10 Nov 1, 2022
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022
An uber-fast parallelized Java classpath scanner and module scanner.

ClassGraph ClassGraph is an uber-fast parallelized classpath scanner and module scanner for Java, Scala, Kotlin and other JVM languages. ClassGraph wo

classgraph 2.4k Dec 29, 2022
Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.

English | 中文 Apollo - A reliable configuration management system Apollo is a reliable configuration management system. It can centrally manage the con

Apollo 27.6k Jan 5, 2023
Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 6 and above, brought to you by Google.

Guice Latest release: 5.0.1 Documentation: User Guide, 5.0.1 javadocs, Latest javadocs Continuous Integration: Mailing Lists: User Mailing List Licens

Google 11.7k Dec 29, 2022
JavaFX micro-framework that follows MVVM Pattern with Google Guice dependency Injection

ReactiveDeskFX (JavaFX and Google Guice MVVM Pattern micro-framework) JavaFX micro-framework to develop very fast JavaFX components with minimal code

TangoraBox 3 Jan 9, 2022
OAUTHScan is a Burp Suite Extension written in Java with the aim to provide some automatic security checks

OAUTHScan is a Burp Suite Extension written in Java with the aim to provide some automatic security checks, which could be useful during penetration testing on applications implementing OAUTHv2 and OpenID standards.

Maurizio S 163 Nov 29, 2022
The Google code scanner API provides a complete solution for scanning codes without requiring your app to request camera permission.

Android Google Code Scanner The Google code scanner API provides a complete solution for scanning codes without requiring your app to request camera p

Prabhakar Thota 7 Nov 23, 2022
A distributed data integration framework that simplifies common aspects of big data integration such as data ingestion, replication, organization and lifecycle management for both streaming and batch data ecosystems.

Apache Gobblin Apache Gobblin is a highly scalable data management solution for structured and byte-oriented data in heterogeneous data ecosystems. Ca

The Apache Software Foundation 2.1k Jan 4, 2023
An intelliJ plugin providing a UI layer for git-flow, which in itself is a collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

Git Flow Integration Plus for Intellij An intelliJ plugin providing a UI layer for git-flow, which in itself is a collection of Git extensions to prov

RubinCarter 35 Nov 8, 2022
Reactive Streams Utilities - Future standard utilities library for Reactive Streams.

Reactive Streams Utilities This is an exploration of what a utilities library for Reactive Streams in the JDK might look like. Glossary: A short gloss

Lightbend 61 May 27, 2021
Best-of-breed OpenTracing utilities, instrumentations and extensions

OpenTracing Toolbox OpenTracing Toolbox is a collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing i

Zalando SE 181 Oct 15, 2022
Best-of-breed OpenTracing utilities, instrumentations and extensions

OpenTracing Toolbox OpenTracing Toolbox is a collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing i

Zalando SE 181 Oct 15, 2022
Best-of-breed OpenTracing utilities, instrumentations and extensions

OpenTracing Toolbox OpenTracing Toolbox is a collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing i

Zalando SE 181 Oct 15, 2022
A declarative mapping library to simplify testable object mappings.

ReMap - A declarative object mapper Table of Contents Long story short About ReMap Great News Mapping operations Validation Features Limitations The m

REMONDIS IT Services GmbH & Co. KG 103 Dec 27, 2022
A simple JavaFX application to load, save and edit a CSV file and provide a JSON configuration for columns to check the values in the columns.

SmartCSV.fx Description A simple JavaFX application to load, save and edit a CSV file and provide a JSON Table Schema for columns to check the values

Andreas Billmann 74 Oct 24, 2022