Graylog2 / Graylog2/graylog2-server
Extract utility module from various modules/repos
- Dominant language
- Java
- Stars
- 8.1k
- Forks
- 1.1k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 217
Description
There are helpful utilities, abstractions and customizations all across the various repositories in Graylog.
Some are inaccessible because they live in plugins, but could be useful in the core, some are not usable because they live in the enterprise code base, but are generic enough that they should be usable in the OSS code as well. In other places we have similar helpers, that could easily be unified.
The objective is to create an independent maven module, that lives in the server repository, but can be used without pulling in the entire server. By nature it will require some of our core dependencies, namely Guava, Guice, Jackson, Mongojack/MongoDB and others. Depending on the work we want to invest, we could split the module up, or just make a first step in extracting the utility code.
If you know a candidate for extraction, please comment on this issue and we'll update the following list:
- [ ] NameAndIdDbService from legacy enterprise repository, pattern is followed in the [lookup tables](https://github.com/Graylog2/graylog2-server/blob/master/graylog2-server/src/main/java/org/graylog2/lookup/db/DBCacheService.java), too. It allows naming DB objects and can load objects via both their internal ObjectId and the name, which is more user friendly for URLs etc.
- [ ] Extract entity search options into a more reusable component. Newer interfaces have the ability to perform server-side searches on domain objects with a mini github-like language. This is used across the enterprise plugins and as well in the lookup tables. This should be possible to do on any domain object, including standard options for pagination.
- [ ] Make Jackson AutoValueTypeIdResolver available. It allows using JsonSubTypes with AutoValue builders and is commonly used in enterprise products to implement versioned value classes. This is generally useful for APIs so it should be extracted.
Contributor guide
Assessment
This issue has not been assessed yet.