Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: documentation overview #1033

Open
GuusLieben opened this issue Dec 13, 2023 · 1 comment
Open

Draft: documentation overview #1033

GuusLieben opened this issue Dec 13, 2023 · 1 comment
Assignees
Labels
Milestone

Comments

@GuusLieben
Copy link
Member

GuusLieben commented Dec 13, 2023

Below is an overview of topics to cover in general documentation. This list is still being worked on, and is therefore not complete.

Let me know if you've found a topic that isn't covered in this list, so I can add it and make sure documentation will be present.

Note: documentation is developed separately in https://github.com/Dockbox-OSS/HartshornDocs, this issue purely serves as a backlink and general tracker.

Core

Cyclic dependency checking

  • constructors only
    Application-level context
  • Global scope
  • Shared context
  • Common logging
  • Auto-processing (ProcessableAppContext)
    Logging defaults
  • Logback integration
    Component processing
  • Pre-processing
  • Post-processing
  • Utility base processors (proxy, annotated methods, onExit, etc)
    Binding functions
  • For scope, priority, auto-processing
  • To (lazy) singletons, suppliers, types, or custom provider
    Environment awareness
  • Proxy orchestrator
  • File system
  • Classpath
  • Type introspector
  • Build env
    • Integrated CI checks
  • Batch and strict mode
  • Type collecting (annotated, child of)
  • Rule checking (is singleton?)
  • Argument access
    Classpath resource locators
    Argument parsing
    Lifecycle observing (and generic Observer)
  • On started
  • On exit
    Activator annotations
  • Auto register pre- and post-processors
    Auto scan packages from context and activators
    Application builders
    Shutdown hooks
    Default bindings for internal components
  • For contextual environment
  • @configuration providers
    Exception handling
    Conditions (RequiresX)
    Component containers and locating
    Component populators
  • Population strategies
  • Injection points
  • Component and context injection
    Component and dependency enabling
    Scopes and scope keys
    Context types and keys (in utils)
    Application aware contexts
    Binders and binding hierarchies
  • Per-component
  • ComponentCollection
  • Singleton caches
  • Pruning
    Dependency resolvers
    Strict and loose matching (@Strict)
    Lazy-loading with Lazy
    Components and stereotypes

Proxy

Proxy factories
Proxy managers
Naming
Orchestration and orchestrator loaders
isProxy and original class lookups
Auto unproxying for equals etc
Manual unproxying (@Unproxy)
Constraint checking (final class, groovy traits, etc)
Proxy advice

  • Interceptors
  • Advisors
  • Invokers
  • Validators
  • Wrappers
    • Before, after return, after exception
  • Stubs
    • Default values
    • Error responses
  • Advice registries
    Implementations (CGLIB, Javassist, Bytebuddy?)

Introspection

Type introspection
Type parameter resolution
Proxy introspection
Classpath scanning
Conversion service

  • Converter, GenericConverter, ConverterFactory, ConditionalConverter
  • Type pairs
  • Built in support converters
  • Null and default value providers
    Virtual component composition
  • Extensions
  • Attribute aliases
    Accessing instance methods, fields, etc
    Parameter loading

Utils

Context types
Collections

  • Multimap
  • Bimap
    Graphs
  • Iterators and DFS/BFS visitors
  • Invertable graphs
    Option API

Reporting

Reportables, reporters, reports
Serializers
Built-in reporters
Property writing
Report aggregation

Discovery

SPI extensions
Runtime overrides and configurability

@GuusLieben GuusLieben self-assigned this Dec 13, 2023
@GuusLieben
Copy link
Member Author

High level topics to be added:

  • Commands
  • Config (+Jackson integration)
  • Core
  • Discovery
  • HSL
  • I18n
  • Introspection (+Reflection implementation)
  • Proxy (+CGLIB, Javassist, and optional Bytebuddy if spike OK)
  • Reporting
  • Utils

@GuusLieben GuusLieben added this to the 0.7.0 milestone Jul 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

1 participant