Code Monkey home page Code Monkey logo

art-java's People

Contributors

antomy-gc avatar antonbashir avatar daniiltitov avatar padmelina avatar papalkov avatar teonia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

antomy-gc

art-java's Issues

Documentaion & Examples

  1. Fill all documentation pages in ART readme
  2. Create ART public site: documentation, feedback, community, examples (interactive with code-paste-execute functional)
  3. Examples for all ART cases
  4. FAQ
  5. Communication channels
  6. Articles (habr, reddit, medium)

Logo

ART must have Logo for presentations and marketing

Exception data

For now only http exceptions could have some addiotional information (Value).
In this issue needs add functional of exception mapper for GRPC and RSocket.
ART must pass full data from exception in all protocols. For services and communicators.

Generator BUG

image
image

Exception during generation mappers for inner model packages (generation will not fail)

NPE during xml models and mappers generation

During generation xml models and mappers from file:
errorWsdl.txt
NullPointerException was thrown.

Supposedly, the problem is in this piece of code and:
image
type definition failed to define type and returned null.

In debug this command helped to define type:

type = element.getSchema().getType(new QName(getNamespaceByPrefix(element, "ns1"), getTypeByElement(element)))

where "ns1" is an element prefix.

Interceptors refactoring

For now, GRPC, RSocket, HTTP and SOAP servers and communication interceptors are:

  • inside configurations (adding new interceptors very complicated
  • haven't functional filters (for some custom filtering logic we must create a new interceptor)

So, in this issue needs:

  • move interceptors from configurations to states
  • to design a new interception architecture (with filters and other functional features)

Automate and secure CI process of ART releasing

For now every contributor can create tag and will be created new Bintray version of ART.

In this issue needs:

  • disable launching release process for tags not on release branch
  • disable pushing to release branch
  • automate release process with automatic increment tag version. gradle tasks:
  • minorRelease
  • majorRelease
  • hotfix

Bug with HTTP interceptors

image

When HTTP interceptor returns 'STOP_HANDLING' strategy, then no one from subsequent HTTP Filters (include servlets) will be called.

In this issue needs to refactor HttpServer class and replace next result holders

private final static ThreadLocal<InterceptionStrategy> lastRequestInterceptionResult = new ThreadLocal<>();
    private final static ThreadLocal<InterceptionStrategy> lastResponseInterceptionResult = new ThreadLocal<>();

for something safe and simple.

We need to clear last interception strategy between requests.

Bugs with configurator

  • errors in configurations after start without configurations in rocks
  • sometimes when call an configurator's url will be empty page (ART HTTP Handler not calling)
  • refresh not working

Refactor expressions

Now every validation expression has enum type.
In this issue needs:

  • replace enum with constant string
  • add pattern as optional parameter for each expression

fix default thread pool size

if avaliableProcessors < 2 make as default tread pool size = avaliableProcessors x 2.
Found bug if 2 processors are available you can't run asynchronousPeriod Task(it will never execute)

Add time unit for every time-value config value

Every config key that presents time value must ends with time unit (milliseconds, etc)
Alternative: for such values the config must have two keys: value and unit (ms, s, h). By default - ms.

Change generation analyzing mechanism

ART Generator now scnanning .class files in build directory. This is not acceptable for ART IDEA plugin, because for realtime or button-mode generation we need parsing .java files.

Also, will be good to replace path scanning mechanism by model package with scanning all .java files with @Mapper annotation and generate mappers for them

Add Reindexer support

ART needs to support full-text search. Best solution is Reindexer with RocksDB engine.

In this issue needs:

  • link reindexer API (reindexer.h) through JNI with Java (must be automated with Gradle)
  • Module & ModuleConfiugration. Confiugration must support fully reindexer native Config and two modes: server/library with two engines: LevelDB & RocksDB
  • DAO like RocksDB

Reindexer native library must be static linked with all dependencies exclude rocksDB. RocksDB library must be provided by RocksDB module

CollectionValue & Entity

There are 4 problems in ART collections:

  1. Null values. Some method (for example, for Long or Int) filter null values. This could be dangerous for some cases. When you need send or receive strong ordered values, we mustn't filter this and just exclude during mapping
  2. Size. Classes for entity and collection value have more than 500 lines of code. In this issue needs to refactor theese classes.
  3. Speed. There are lot of point where we can add Parallel Streaming. In theese issue needs create EntityModule with default and agile configurations with one value - "enableParallelism".
    And during convertiong to/from value use parallel mappings (parallel streams or custom mapping of any pool)

RSocket & GRPC RPC Model

For now, RSocket and GRPC working with ServiceRequest and ServiceResnpose.

In this issue needs try to design a universal architecture for all protocols, that not depends on Service entities

HTTP Communicators handlers

For now, HTTP communicator (sync/async modes) not handle 4xx error codes.

In this issue needs to change logic of parsing Apache HTTP Response and add checks on HTTP statuses.
Check must be configurable:

  • CHECKED mode - we are checking status code and throws an HttpCommunicationResponseException with HTTP Response as field
  • UNCHECKED - we are just parsing HTTP Response ignoring statuses

Bug with context loading

During constructing some configurations ART context state becomes 'LOADING_MODULES'.
BUT! If you want load any other Module during constructing configuration context state become 'READY'. And after youre configuration won't be accessable because lazy reference will be point to parent configuration.

In this issue needs fix context module loading:

  1. Remember current state
  2. Change state to 'LOADING_MODULES'
  3. Do action
  4. Change state to remembered in (1.)
  5. Return result (module or state)

Add beanstalkd module

Add two new module for queue messaging (producer and consumer). Add beanstalkd as queue for
message.

Need for consumer:

  1. Starting beanstalkd as linux service with starting module (as kafka or tarantool) or connect for existing
  2. Make optimizing default configuration for starting beanstalkd as linux service
  3. Add default tube if there are no other configuration

Need for producer:

  1. Make usability API for all supported operations: put;reserve;delete;bury;kick;release;
  2. Make default configuration with static params for this operations
    Material:
    https://github.com/beanstalkd/beanstalkd
    https://beanstalkc.readthedocs.io/en/latest/tutorial.html#getting-started
    https://ruhighload.com/%D0%9E%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D0%B8+%D0%BD%D0%B0+beanstalk
    https://habr.com/ru/company/shopozzcom/blog/240483/

Review and refactoring of configurations and states

  • Make configuration functional mutators (beacause creation of ovveriding class for changing configuration parameter is not cool)
  • Think about moving some parameters into state
  • Make immutable collections (not for only configurations, in all project)

Bug with mappers generation

При генерации вложенных моделек неправильно определяется пакет:
image
Также неправильно проставляются импорты в мапперах.
image
Модельки тут - ru.zip

Replace MapValue and StringParametrsMap with Universal Entity

Entity now is wrapper for Map<String, ? extends Value>.
MapValue & StringParametes could be removed and replaced with Map<? extends Value, ? extends Value>.

In this issue needs:

  • change Entity implementation for support Map<? extends Value, ? extends Value>
  • remove MapValue, StringParamters and references on them
  • Improve Entity API for support Maps

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.