Skip to content

Latest commit

 

History

History
119 lines (68 loc) · 2.99 KB

ROADMAP.adoc

File metadata and controls

119 lines (68 loc) · 2.99 KB

Particle Requirements

Minimum Feature Set

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

Core Features

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:

  • Hystrix

Configuration Sharing

Need a mechanism for configuration discovery and sharing across the federation. Configuration sharing should initially support:

Auto Configurations

We still need auto-configurations for the following:

  • GORM for MongoDB

  • Apache Kafka

  • Cassandra

Security / JWT Token Solution

Need to implement support for JWT token based authorization

Management Features

Endpoints

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

  • logging

  • info

These should be built on the Endpoint API.

Health Checks

Health checks still to be implemented:

  • Neo4j Driver

HTTP Server

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…​)