Skip to content

Latest commit

 

History

History
54 lines (43 loc) · 3.21 KB

File metadata and controls

54 lines (43 loc) · 3.21 KB

proxybuilder-annotations

Annotations consumed and emitted by the proxybuilder annotation processor.

Use this module on the compile classpath of any consumer that wants to reference the annotations directly (e.g. read @GeneratedByProxyBuilder at runtime, hand-apply @SkipProxy, tune behaviour with @ProxyBuilderOptions). The processor itself stays on <annotationProcessorPaths> so its transitive dependencies (JavaPoet, Metrics, SLF4J) never enter the consumer's compile classpath.

<dependency>
  <groupId>com.svenruppert</groupId>
  <artifactId>proxybuilder-annotations</artifactId>
  <version>00.11.01</version>
</dependency>

<build>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <annotationProcessorPaths>
          <path>
            <groupId>com.svenruppert</groupId>
            <artifactId>proxybuilder</artifactId>
            <version>00.11.01</version>
          </path>
        </annotationProcessorPaths>
      </configuration>
    </plugin>
  </plugins>
</build>

JPMS module name: com.svenruppert.proxybuilder.annotations.

Annotations

Annotation Target Retention Tier Notes
@GeneratedByProxyBuilder TYPE RUNTIME 1 Emitted on every wrapper; readable via reflection.
@SkipProxy METHOD, CONSTRUCTOR SOURCE 1 Skip a member during proxy generation.
@ProxyBuilderOptions TYPE SOURCE 1 Per-class overrides for suffix / failOnStatic / excludeMethodNames.
@DelegatesTo METHOD RUNTIME 2 Auto-emitted on every generated method; JLS-style source ref.
@WrappedBy TYPE RUNTIME 2 Hand-applied on the original; documents wrapper linkage.
@Internal TYPE, METHOD, CONSTRUCTOR, FIELD CLASS 2 Marks proxybuilder-internal API not intended for consumers.
@ProxyEntry METHOD SOURCE 3 Reserved for future generator policies; no-op in 00.11.00.
@GeneratedSource METHOD, CONSTRUCTOR, FIELD SOURCE 3 Manual marker for partially-generated classes; processor does not emit.
@ProxyName TYPE SOURCE 3 Per-class name pattern with {Original} placeholder; beats suffix.

Runtime helper

ProxyEnforcement.requireWrapped(instance) throws IllegalStateException if instance.getClass() carries @WrappedBy(X) and instance is not an X. Use in factories / DI graphs to refuse the un-wrapped original.

Versioning

ProxyBuilderVersion.VERSION exposes the proxybuilder release this module belongs to.