dbrain-classtags

This library enable you to: Easily tag classes with annotations for later discovery. Avoid using class path scanning. Easy to define new tags.

License

License

GroupId

GroupId

org.dbrain.lib
ArtifactId

ArtifactId

dbrain-classtags
Last Version

Last Version

2.1
Release Date

Release Date

Type

Type

jar
Description

Description

dbrain-classtags
This library enable you to: Easily tag classes with annotations for later discovery. Avoid using class path scanning. Easy to define new tags.
Source Code Management

Source Code Management

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

Download dbrain-classtags

How to add to project

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

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
2.1
2.0
1.2