dbrain-tags

View README.md

License

License

GroupId

GroupId

org.dbrain
ArtifactId

ArtifactId

dbrain-tags
Last Version

Last Version

3.3
Release Date

Release Date

Type

Type

jar
Description

Description

dbrain-tags
View README.md
Source Code Management

Source Code Management

https://github.com/dbrain-org/classtags

Download dbrain-tags

How to add to project

<!-- https://jarcasting.com/artifacts/org.dbrain/dbrain-tags/ -->
<dependency>
    <groupId>org.dbrain</groupId>
    <artifactId>dbrain-tags</artifactId>
    <version>3.3</version>
</dependency>
// https://jarcasting.com/artifacts/org.dbrain/dbrain-tags/
implementation 'org.dbrain:dbrain-tags:3.3'
// https://jarcasting.com/artifacts/org.dbrain/dbrain-tags/
implementation ("org.dbrain:dbrain-tags:3.3")
'org.dbrain:dbrain-tags:jar:3.3'
<dependency org="org.dbrain" name="dbrain-tags" rev="3.3">
  <artifact name="dbrain-tags" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.dbrain', module='dbrain-tags', version='3.3')
)
libraryDependencies += "org.dbrain" % "dbrain-tags" % "3.3"
[org.dbrain/dbrain-tags "3.3"]

Dependencies

test (1)

Group / Artifact Type Version
junit : junit jar 4.12

Project Modules

There are no modules declared in this project.

Tags

Use case

  1. Use marker interfaces or annotations to tag classes and discover them later while avoiding class path scanning.

Usage

Import the project from maven central:

<dependency>
	<groupId>org.dbrain</groupId>
	<artifactId>dbrain-tags</artifactId>
	<version>3.3</version>
</dependency>

Start tracking classes by creating annotations and interfaces annotated with @Tag:


// Annotation
@Tag
@Target( ElementType.TYPE )
public @interface MyTag {}

// Interface
@Tag
public interface MyRootSomething {}

Tag classes:

@MyTag
public class ToDiscover {}

// or

public class MyImplSomething implements MyRootSomething {}


Then query tagged classes using the API:

  List<Class> myTaggedClasses = Tags.listClassByTag( MyTag.class );
  
  List<Class> myTaggedClasses = Tags.listClassByTag( MyRootSomething.class );
  

Components

  1. An annotation processor that keeps track of classes tagged with specific custom annotations.
  2. An engine to query gathered information.

Troubleshooting

For this to works as expected, you have to make sure:

  1. Your development environment must support and discover the annotation processor.
  2. For most cases, the annotation processor works fine with incremental compilation but if the meta-file go out-of-sync, you have to perform a full compilation.

Roadmap

  1. User-defined tag definition files to works with 3rd party libraries.
  2. Enhanced error handling.
  3. Support annotations on packages.

Versions

Version
3.3
3.1
3.0