Skip to content

Latest commit

 

History

History
122 lines (73 loc) · 2.59 KB

ROADMAP.adoc

File metadata and controls

122 lines (73 loc) · 2.59 KB

Particle Requirements

Minimum Feature Set

The following features are a TODO list of things to do on Particle before launching

Core Features

Support for @Nullable as an alternative to Optional

Right now we have to do this every time a dependency is optional for a constructor

class Foo {
    Foo(Optional<Bar> bar) {
        ...
    }
}

Would be nice to also allow @Nullable:

class Foo {
    Foo(@Nullable Bar bar) {
        ...
    }
}

@DefaultScope annotation

We need a meta annotation to allow specifying the default scope to fallback to if no scope is defined

Generate ConfigurationProperties documentation

We should generate asciidoc documentation for @ConfigurationProperties

Generic Type Abstraction for Factory Beans

This is currently not possible due to type erasure:

@Factory
class TypeConverterFactory {

    TypeConverter<String, Integer> typeConverter() {
        (string, integer, context) -> {
           // do conversion
        }
    }
}

At compile time we know the types but at runtime the lambda loses type information. We need to add an API to obtain type information for a bean from the factory.

AOP API

  • We need to allow Introduction advise to specify additional interfaces that should be be implemented by the interceptor.

  • Allow adding interfaces to non-abstract classes via introduction advise

Aspect Implementations

We need to implement AOP annotations for:

  • Retry

  • Hystrix

Configuration Sharing

Need a mechanism for configuration discovery and sharing across the federation

Management Features

Endpoints

We need endpoints for managing and/or exposing information about:

  • logging

These should be built on the Endpoint API

HTTP Server

HTTPS Support

HTTPS must be supported

Content Negotiation

Content negotiation must be supported

WebSocket Support

WebSocket Support must be implemented

Support for Views

Some view technology support and port GSON views to Particle.

HTTP Client

Distributed Tracing

Built in distributed tracing should be activated by default and allow integration with third-part tools (zipkin etc.)

HTTP Gateway

An HTTP gateway that loads on port 8080 and uses the aforementioned HTTP client. The gateway need to be responsible for:

  • JWT Token based authentication

  • Load Balancing

  • Starting Distributed Tracing

  • Retry

  • Rate limiting

  • Route matching on HTTP Request (Path, Method, Header, Host, etc…​)

  • Filters to modify downstream HTTP Request and HTTP Response (Add/Remove Headers, Add/Remove Parameters, Rewrite Path etc…​)