# Package com.codename1.annotations

package com.codename1.annotations
Codename One specific Java annotations used by the build pipeline and the ParparVM bytecode translator to mark methods and classes for special treatment -- e.g. opting individual call sites out of debug info or null/array-bounds checks, declaring asynchronous methods, or forcing a class to be treated as concrete during devirtualization.

- Related Packages
  Package
  Description
  com.codename1.annotations.graphql
  Annotations for declaring type safe GraphQL clients.
  com.codename1.annotations.grpc
  gRPC-Web client annotations.
  com.codename1.annotations.rest
  Annotations for declaring type safe REST clients.
- Class
  Description
  Async
  Helper annotations for asynchronous computation.
  Async.Execute
  Indicates that the marked method executes async computation.
  Async.Schedule
  Indicates that the marked method schedules async computation.
  Bind
  Pairs a `@Bindable` field with the component it should mirror.
  Bindable
  Marks a POJO or `PropertyBusinessObject` as a target for the component binding processor.
  Column
  Renames or constrains an `@Entity` field's column.
  Concrete
  Indicates that a class has a known concrete implementation that ParparVM can target directly in native (C/Objective-C) pipelines.
  DbTransient
  Excludes an `@Entity` field from the generated table.
  DisableDebugInfo
  Marks a method so ParparVM omits emitted debug line information.
  DisableNullChecksAndArrayBoundsChecks
  Marks a method so ParparVM omits emitted null and array bounds checks.
  Email
  Requires the component value to be a syntactically valid e-mail address.
  Entity
  Marks a POJO or `PropertyBusinessObject` as a target for the SQLite ORM processor.
  ExistIn
  Requires the component value to be one of an allowed list of strings.
  Fused
  Marks a class whose constructor-created primitive-array fields are fully ENCAPSULATED, letting ParparVM allocate each instance TOGETHER with those arrays as a single heap block ("fused object"): one allocation instead of several, one object for the garbage collector instead of several, and the arrays share the owner's cache lines.
  Id
  Designates the primary-key field of an `@Entity`.
  JsonIgnore
  Excludes a `@Mapped` field from the JSON projection.
  JsonProperty
  Renames a `@Mapped` field in the JSON projection.
  Length
  Requires the component value to have at least `min` characters.
  Mapped
  Marks a POJO or `PropertyBusinessObject` as a target for the build-time JSON / XML mapping processor.
  Numeric
  Requires the component value to parse as a number, optionally within a closed range.
  Regex
  Requires the component value to match a regular expression.
  Required
  Marks a `@Bind` field whose component must hold a non-empty value.
  Route
  Binds a `Form` class -- or a static method that returns a `Form` -- to a URL path so the framework can show it in response to a deep link.
  Route.Routes
  Container annotation for binding several path patterns to the same target.
  RouteParam
  Binds a constructor or static-factory parameter to a path variable or query parameter from an incoming deep link.
  Url
  Requires the component value to be a syntactically valid URL (http, https, ftp, or file scheme).
  Validate
  Escape hatch for the validation annotation set: points the component at a hand-written `com.codename1.ui.validation.Constraint` implementation.
  XmlAttribute
  Promotes a `@Mapped` field to an XML attribute on the parent element rather than a nested child element.
  XmlElement
  Renames a `@Mapped` field in the XML projection.
  XmlRoot
  Names the root XML element produced for a `@Mapped` class.
  XmlTransient
  Excludes a `@Mapped` field from the XML projection.