Merge branch 'main' into jcogs33/java/junit5-missing-nested-annotation

This commit is contained in:
Jami
2025-04-21 09:46:49 -04:00
committed by GitHub
1323 changed files with 91120 additions and 14578 deletions

View File

@@ -1,3 +1,25 @@
## 7.1.3
### Minor Analysis Improvements
* Enum-typed values are now assumed to be safe by most queries. This means that queries may return fewer results where an enum value is used in a sensitive context, e.g. pasted into a query string.
* All existing modelling and support for `javax.persistence` now applies to `jakarta.persistence` as well.
## 7.1.2
### Minor Analysis Improvements
* Java extraction is now able to download Maven 3.9.x if a Maven Enforcer Plugin configuration indicates it is necessary. Maven 3.8.x is still preferred if the enforcer-plugin configuration (if any) permits it.
* Added a path injection sanitizer for calls to `java.lang.String.matches`, `java.lang.String.replace`, and `java.lang.String.replaceAll` that make sure '/', '\', '..' are not in the path.
### Bug Fixes
* In `build-mode: none` where the project has a Gradle build system, database creation no longer attempts to download some non-existent jar files relating to non-jar Maven artifacts, such as BOMs. This was harmless, but saves some time and reduces spurious warnings.
* Java extraction no longer freezes for a long time or times out when using libraries that feature expanding cyclic generic types. For example, this was known to occur when using some classes from the Blazebit Persistence library.
* Java build-mode `none` no longer fails when a required version of Gradle cannot be downloaded using the `gradle wrapper` command, such as due to a firewall. It will now attempt to use the system version of Gradle if present, or otherwise proceed without detailed dependency information.
* Java build-mode `none` no longer fails when a required version of Maven cannot be downloaded, such as due to a firewall. It will now attempt to use the system version of Maven if present, or otherwise proceed without detailed dependency information.
* Java build-mode `none` now correctly uses Maven dependency information on Windows platforms.
## 7.1.1
No user-facing changes.

View File

@@ -1,5 +0,0 @@
---
category: fix
---
* Java build-mode `none` no longer fails when a required version of Maven cannot be downloaded, such as due to a firewall. It will now attempt to use the system version of Maven if present, or otherwise proceed without detailed dependency information.
* Java build-mode `none` now correctly uses Maven dependency information on Windows platforms.

View File

@@ -1,4 +0,0 @@
---
category: minorAnalysis
---
* Added a path injection sanitizer for calls to `java.lang.String.matches`, `java.lang.String.replace`, and `java.lang.String.replaceAll` that make sure '/', '\', '..' are not in the path.

View File

@@ -1,4 +0,0 @@
---
category: fix
---
* Java extraction no longer freezes for a long time or times out when using libraries that feature expanding cyclic generic types. For example, this was known to occur when using some classes from the Blazebit Persistence library.

View File

@@ -1,4 +0,0 @@
---
category: fix
---
* Java build-mode `none` no longer fails when a required version of Gradle cannot be downloaded using the `gradle wrapper` command, such as due to a firewall. It will now attempt to use the system version of Gradle if present, or otherwise proceed without detailed dependency information.

View File

@@ -1,4 +0,0 @@
---
category: minorAnalysis
---
* Java extraction is now able to download Maven 3.9.x if a Maven Enforcer Plugin configuration indicates it is necessary. Maven 3.8.x is still preferred if the enforcer-plugin configuration (if any) permits it.

View File

@@ -0,0 +1,14 @@
## 7.1.2
### Minor Analysis Improvements
* Java extraction is now able to download Maven 3.9.x if a Maven Enforcer Plugin configuration indicates it is necessary. Maven 3.8.x is still preferred if the enforcer-plugin configuration (if any) permits it.
* Added a path injection sanitizer for calls to `java.lang.String.matches`, `java.lang.String.replace`, and `java.lang.String.replaceAll` that make sure '/', '\', '..' are not in the path.
### Bug Fixes
* In `build-mode: none` where the project has a Gradle build system, database creation no longer attempts to download some non-existent jar files relating to non-jar Maven artifacts, such as BOMs. This was harmless, but saves some time and reduces spurious warnings.
* Java extraction no longer freezes for a long time or times out when using libraries that feature expanding cyclic generic types. For example, this was known to occur when using some classes from the Blazebit Persistence library.
* Java build-mode `none` no longer fails when a required version of Gradle cannot be downloaded using the `gradle wrapper` command, such as due to a firewall. It will now attempt to use the system version of Gradle if present, or otherwise proceed without detailed dependency information.
* Java build-mode `none` no longer fails when a required version of Maven cannot be downloaded, such as due to a firewall. It will now attempt to use the system version of Maven if present, or otherwise proceed without detailed dependency information.
* Java build-mode `none` now correctly uses Maven dependency information on Windows platforms.

View File

@@ -0,0 +1,6 @@
## 7.1.3
### Minor Analysis Improvements
* Enum-typed values are now assumed to be safe by most queries. This means that queries may return fewer results where an enum value is used in a sensitive context, e.g. pasted into a query string.
* All existing modelling and support for `javax.persistence` now applies to `jakarta.persistence` as well.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 7.1.1
lastReleaseVersion: 7.1.3

View File

@@ -1,5 +1,5 @@
name: codeql/java-all
version: 7.1.2-dev
version: 7.1.4-dev
groups: java
dbscheme: config/semmlecode.dbscheme
extractor: java

View File

@@ -180,7 +180,7 @@ class CompileTimeConstantExpr extends Expr {
/**
* Gets the string value of this expression, where possible.
*/
pragma[nomagic]
cached
string getStringValue() {
result = this.(StringLiteral).getValue()
or
@@ -205,7 +205,7 @@ class CompileTimeConstantExpr extends Expr {
/**
* Gets the boolean value of this expression, where possible.
*/
pragma[nomagic]
cached
boolean getBooleanValue() {
// Literal value.
result = this.(BooleanLiteral).getBooleanValue()

View File

@@ -5,6 +5,19 @@
import java
import Dominance
cached
private module BasicBlockStage {
cached
predicate ref() { any() }
cached
predicate backref() {
(exists(any(BasicBlock bb).getABBSuccessor()) implies any()) and
(exists(any(BasicBlock bb).getNode(_)) implies any()) and
(exists(any(BasicBlock bb).length()) implies any())
}
}
/**
* A control-flow node that represents the start of a basic block.
*
@@ -12,8 +25,11 @@ import Dominance
* often be treated as a unit in analyses.
*/
class BasicBlock extends ControlFlowNode {
cached
BasicBlock() {
not exists(this.getAPredecessor()) and exists(this.getASuccessor())
BasicBlockStage::ref() and
not exists(this.getAPredecessor()) and
exists(this.getASuccessor())
or
strictcount(this.getAPredecessor()) > 1
or
@@ -24,7 +40,10 @@ class BasicBlock extends ControlFlowNode {
/** Gets an immediate successor of this basic block. */
cached
BasicBlock getABBSuccessor() { result = this.getLastNode().getASuccessor() }
BasicBlock getABBSuccessor() {
BasicBlockStage::ref() and
result = this.getLastNode().getASuccessor()
}
/** Gets an immediate predecessor of this basic block. */
BasicBlock getABBPredecessor() { result.getABBSuccessor() = this }
@@ -35,7 +54,9 @@ class BasicBlock extends ControlFlowNode {
/** Gets the control-flow node at a specific (zero-indexed) position in this basic block. */
cached
ControlFlowNode getNode(int pos) {
result = this and pos = 0
BasicBlockStage::ref() and
result = this and
pos = 0
or
exists(ControlFlowNode mid, int mid_pos | pos = mid_pos + 1 |
this.getNode(mid_pos) = mid and
@@ -52,7 +73,10 @@ class BasicBlock extends ControlFlowNode {
/** Gets the number of control-flow nodes contained in this basic block. */
cached
int length() { result = strictcount(this.getANode()) }
int length() {
BasicBlockStage::ref() and
result = strictcount(this.getANode())
}
/** Holds if this basic block strictly dominates `node`. */
predicate bbStrictlyDominates(BasicBlock node) { bbStrictlyDominates(this, node) }

View File

@@ -14,9 +14,26 @@
import java
private import codeql.ssa.Ssa as SsaImplCommon
cached
private module BaseSsaStage {
cached
predicate ref() { any() }
cached
predicate backref() {
(exists(TLocalVar(_, _)) implies any()) and
(exists(any(BaseSsaSourceVariable v).getAnAccess()) implies any()) and
(exists(getAUse(_)) implies any())
}
}
cached
private newtype TBaseSsaSourceVariable =
TLocalVar(Callable c, LocalScopeVariable v) {
c = v.getCallable() or c = v.getAnAccess().getEnclosingCallable()
BaseSsaStage::ref() and
c = v.getCallable()
or
c = v.getAnAccess().getEnclosingCallable()
}
/**
@@ -31,6 +48,7 @@ class BaseSsaSourceVariable extends TBaseSsaSourceVariable {
*/
cached
VarAccess getAnAccess() {
BaseSsaStage::ref() and
exists(LocalScopeVariable v, Callable c |
this = TLocalVar(c, v) and result = v.getAnAccess() and result.getEnclosingCallable() = c
)
@@ -188,6 +206,7 @@ cached
private module Cached {
cached
VarRead getAUse(Impl::Definition def) {
BaseSsaStage::ref() and
exists(BaseSsaSourceVariable v, BasicBlock bb, int i |
Impl::ssaDefReachesRead(v, def, bb, i) and
result.getControlFlowNode() = bb.getNode(i) and

View File

@@ -26,6 +26,14 @@ private predicate deadcode(Expr e) {
module SsaFlow {
module Impl = SsaImpl::DataFlowIntegration;
private predicate ssaDefAssigns(SsaExplicitUpdate def, Expr value) {
exists(VariableUpdate upd | upd = def.getDefiningExpr() |
value = upd.(VariableAssign).getSource() or
value = upd.(AssignOp) or
value = upd.(RecordBindingVariableExpr)
)
}
Impl::Node asNode(Node n) {
n = TSsaNode(result)
or
@@ -33,7 +41,12 @@ module SsaFlow {
or
result.(Impl::ExprPostUpdateNode).getExpr() = n.(PostUpdateNode).getPreUpdateNode().asExpr()
or
TExplicitParameterNode(result.(Impl::ParameterNode).getParameter()) = n
exists(Parameter p |
n = TExplicitParameterNode(p) and
result.(Impl::WriteDefSourceNode).getDefinition().(SsaImplicitInit).isParameterDefinition(p)
)
or
ssaDefAssigns(result.(Impl::WriteDefSourceNode).getDefinition(), n.asExpr())
}
predicate localFlowStep(SsaSourceVariable v, Node nodeFrom, Node nodeTo, boolean isUseStep) {

View File

@@ -647,22 +647,8 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
Expr getARead(Definition def) { result = getAUse(def) }
class Parameter = J::Parameter;
predicate ssaDefAssigns(Impl::WriteDefinition def, Expr value) {
exists(VariableUpdate upd | upd = def.(SsaExplicitUpdate).getDefiningExpr() |
value = upd.(VariableAssign).getSource() or
value = upd.(AssignOp) or
value = upd.(RecordBindingVariableExpr)
)
}
predicate ssaDefInitializesParam(Impl::WriteDefinition def, Parameter p) {
def.(SsaImplicitInit).getSourceVariable() =
any(SsaSourceVariable v |
v.getVariable() = p and
v.getEnclosingCallable() = p.getCallable()
)
predicate ssaDefHasSource(WriteDefinition def) {
def instanceof SsaExplicitUpdate or def.(SsaImplicitInit).isParameterDefinition(_)
}
predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) {
@@ -680,10 +666,17 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
}
}
/** Holds if the guard `guard` directly controls block `bb` upon evaluating to `branch`. */
predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, boolean branch) {
guard.directlyControls(bb, branch)
}
/** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */
predicate guardControlsBlock(Guard guard, BasicBlock bb, boolean branch) {
guard.controls(bb, branch)
}
predicate includeWriteDefsInFlowStep() { none() }
}
private module DataFlowIntegrationImpl = Impl::DataFlowIntegration<DataFlowIntegrationInput>;

View File

@@ -161,10 +161,10 @@ class JpaReadField extends ReflectivelyReadField {
this = entity.getAField() and
(
entity.getAccessType() = "field" or
this.hasAnnotation("javax.persistence", "Access")
this.hasAnnotation(getAPersistencePackageName(), "Access")
)
|
not this.hasAnnotation("javax.persistence", "Transient") and
not this.hasAnnotation(getAPersistencePackageName(), "Transient") and
not this.isStatic() and
not this.isFinal()
)

View File

@@ -7,6 +7,7 @@ import semmle.code.java.deadcode.StrutsEntryPoints
import semmle.code.java.deadcode.TestEntryPoints
import semmle.code.java.deadcode.WebEntryPoints
import semmle.code.java.frameworks.javaee.JavaServerFaces
import semmle.code.java.frameworks.javaee.Persistence
import semmle.code.java.frameworks.JAXB
import semmle.code.java.frameworks.JaxWS
import semmle.code.java.JMX
@@ -395,7 +396,7 @@ class PersistencePropertyMethod extends CallableEntryPoint {
this = e.getACallable() and
(
e.getAccessType() = "property" or
this.hasAnnotation("javax.persistence", "Access")
this.hasAnnotation(getAPersistencePackageName(), "Access")
) and
(
this.getName().matches("get%") or

View File

@@ -269,18 +269,24 @@ private MethodCall getSystemPropertyFromSpringProperties(string propertyName) {
* for final variables.
*/
private predicate localExprFlowPlusInitializers(Expr e1, Expr e2) {
e1 = e2 or
localFlowPlusInitializers(DataFlow::exprNode(e1), DataFlow::exprNode(e2))
}
private predicate localFlowPlusInitializers(DataFlow::Node pred, DataFlow::Node succ) =
fastTC(localFlowStepPlusInitializers/2)(pred, succ)
/**
* Holds if data can flow from `pred` to `succ` in zero or more
* local (intra-procedural) steps or via instance or static variable intializers
* Holds if data can flow from `pred` to `succ` in a
* local (intra-procedural) step or via instance or static variable intializers
* for final variables.
*/
private predicate localFlowPlusInitializers(DataFlow::Node pred, DataFlow::Node succ) {
exists(Variable v | v.isFinal() and pred.asExpr() = v.getInitializer() |
DataFlow::localFlow(DataFlow::exprNode(v.getAnAccess()), succ)
private predicate localFlowStepPlusInitializers(DataFlow::Node pred, DataFlow::Node succ) {
exists(Variable v |
v.isFinal() and
pred.asExpr() = v.getInitializer() and
succ.asExpr() = v.getAnAccess()
)
or
DataFlow::localFlow(pred, succ)
DataFlow::localFlowStep(pred, succ)
}

View File

@@ -4,6 +4,11 @@
import java
/**
* Gets a JavaEE Persistence API package name.
*/
string getAPersistencePackageName() { result = ["javax.persistence", "jakarta.persistence"] }
/**
* A `RefType` with the `@Entity` annotation that indicates that it can be persisted using a JPA
* compatible framework.
@@ -27,13 +32,13 @@ class PersistentEntity extends RefType {
else
// If the access type is not explicit, then the location of the `Id` annotation determines
// which access type is used.
if this.getAMethod().hasAnnotation("javax.persistence", "Id")
if this.getAMethod().hasAnnotation(getAPersistencePackageName(), "Id")
then result = "property"
else result = "field"
}
/**
* Gets the access type for this entity as defined by a `@javax.persistence.Access` annotation,
* Gets the access type for this entity as defined by a `@{javax,jakarta}.persistence.Access` annotation,
* if any, in lower case.
*/
string getAccessTypeFromAnnotation() {
@@ -44,617 +49,673 @@ class PersistentEntity extends RefType {
}
/*
* Annotations in the `javax.persistence` package.
* Annotations in the `{javax,jakarta}.persistence` package.
*/
/**
* A `@javax.persistence.Access` annotation.
* A `@{javax,jakarta}.persistence.Access` annotation.
*/
class AccessAnnotation extends Annotation {
AccessAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Access") }
AccessAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Access") }
}
/**
* A `@javax.persistence.AccessType` annotation.
* A `@{javax,jakarta}.persistence.AccessType` annotation.
*/
class AccessTypeAnnotation extends Annotation {
AccessTypeAnnotation() { this.getType().hasQualifiedName("javax.persistence", "AccessType") }
AccessTypeAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "AccessType")
}
}
/**
* A `@javax.persistence.AssociationOverride` annotation.
* A `@{javax,jakarta}.persistence.AssociationOverride` annotation.
*/
class AssociationOverrideAnnotation extends Annotation {
AssociationOverrideAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "AssociationOverride")
this.getType().hasQualifiedName(getAPersistencePackageName(), "AssociationOverride")
}
}
/**
* A `@javax.persistence.AssociationOverrides` annotation.
* A `@{javax,jakarta}.persistence.AssociationOverrides` annotation.
*/
class AssociationOverridesAnnotation extends Annotation {
AssociationOverridesAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "AssociationOverrides")
this.getType().hasQualifiedName(getAPersistencePackageName(), "AssociationOverrides")
}
}
/**
* A `@javax.persistence.AttributeOverride` annotation.
* A `@{javax,jakarta}.persistence.AttributeOverride` annotation.
*/
class AttributeOverrideAnnotation extends Annotation {
AttributeOverrideAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "AttributeOverride")
this.getType().hasQualifiedName(getAPersistencePackageName(), "AttributeOverride")
}
}
/**
* A `@javax.persistence.AttributeOverrides` annotation.
* A `@{javax,jakarta}.persistence.AttributeOverrides` annotation.
*/
class AttributeOverridesAnnotation extends Annotation {
AttributeOverridesAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "AttributeOverrides")
this.getType().hasQualifiedName(getAPersistencePackageName(), "AttributeOverrides")
}
}
/**
* A `@javax.persistence.Basic` annotation.
* A `@{javax,jakarta}.persistence.Basic` annotation.
*/
class BasicAnnotation extends Annotation {
BasicAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Basic") }
BasicAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Basic") }
}
/**
* A `@javax.persistence.Cacheable` annotation.
* A `@{javax,jakarta}.persistence.Cacheable` annotation.
*/
class CacheableAnnotation extends Annotation {
CacheableAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Cacheable") }
CacheableAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "Cacheable")
}
}
/**
* A `@javax.persistence.CollectionTable` annotation.
* A `@{javax,jakarta}.persistence.CollectionTable` annotation.
*/
class CollectionTableAnnotation extends Annotation {
CollectionTableAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "CollectionTable")
this.getType().hasQualifiedName(getAPersistencePackageName(), "CollectionTable")
}
}
/**
* A `@javax.persistence.Column` annotation.
* A `@{javax,jakarta}.persistence.Column` annotation.
*/
class ColumnAnnotation extends Annotation {
ColumnAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Column") }
ColumnAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Column") }
}
/**
* A `@javax.persistence.ColumnResult` annotation.
* A `@{javax,jakarta}.persistence.ColumnResult` annotation.
*/
class ColumnResultAnnotation extends Annotation {
ColumnResultAnnotation() { this.getType().hasQualifiedName("javax.persistence", "ColumnResult") }
ColumnResultAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "ColumnResult")
}
}
/**
* A `@javax.persistence.DiscriminatorColumn` annotation.
* A `@{javax,jakarta}.persistence.DiscriminatorColumn` annotation.
*/
class DiscriminatorColumnAnnotation extends Annotation {
DiscriminatorColumnAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "DiscriminatorColumn")
this.getType().hasQualifiedName(getAPersistencePackageName(), "DiscriminatorColumn")
}
}
/**
* A `@javax.persistence.DiscriminatorValue` annotation.
* A `@{javax,jakarta}.persistence.DiscriminatorValue` annotation.
*/
class DiscriminatorValueAnnotation extends Annotation {
DiscriminatorValueAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "DiscriminatorValue")
this.getType().hasQualifiedName(getAPersistencePackageName(), "DiscriminatorValue")
}
}
/**
* A `@javax.persistence.ElementCollection` annotation.
* A `@{javax,jakarta}.persistence.ElementCollection` annotation.
*/
class ElementCollectionAnnotation extends Annotation {
ElementCollectionAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "ElementCollection")
this.getType().hasQualifiedName(getAPersistencePackageName(), "ElementCollection")
}
}
/**
* A `@javax.persistence.Embeddable` annotation.
* A `@{javax,jakarta}.persistence.Embeddable` annotation.
*/
class EmbeddableAnnotation extends Annotation {
EmbeddableAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Embeddable") }
EmbeddableAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "Embeddable")
}
}
/**
* A `@javax.persistence.Embedded` annotation.
* A `@{javax,jakarta}.persistence.Embedded` annotation.
*/
class EmbeddedAnnotation extends Annotation {
EmbeddedAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Embedded") }
EmbeddedAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Embedded") }
}
/**
* A `@javax.persistence.EmbeddedId` annotation.
* A `@{javax,jakarta}.persistence.EmbeddedId` annotation.
*/
class EmbeddedIdAnnotation extends Annotation {
EmbeddedIdAnnotation() { this.getType().hasQualifiedName("javax.persistence", "EmbeddedId") }
EmbeddedIdAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "EmbeddedId")
}
}
/**
* A `@javax.persistence.Entity` annotation.
* A `@{javax,jakarta}.persistence.Entity` annotation.
*/
class EntityAnnotation extends Annotation {
EntityAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Entity") }
EntityAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Entity") }
}
/**
* A `@javax.persistence.EntityListeners` annotation.
* A `@{javax,jakarta}.persistence.EntityListeners` annotation.
*/
class EntityListenersAnnotation extends Annotation {
EntityListenersAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "EntityListeners")
this.getType().hasQualifiedName(getAPersistencePackageName(), "EntityListeners")
}
}
/**
* A `@javax.persistence.EntityResult` annotation.
* A `@{javax,jakarta}.persistence.EntityResult` annotation.
*/
class EntityResultAnnotation extends Annotation {
EntityResultAnnotation() { this.getType().hasQualifiedName("javax.persistence", "EntityResult") }
EntityResultAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "EntityResult")
}
}
/**
* A `@javax.persistence.Enumerated` annotation.
* A `@{javax,jakarta}.persistence.Enumerated` annotation.
*/
class EnumeratedAnnotation extends Annotation {
EnumeratedAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Enumerated") }
EnumeratedAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "Enumerated")
}
}
/**
* A `@javax.persistence.ExcludeDefaultListeners` annotation.
* A `@{javax,jakarta}.persistence.ExcludeDefaultListeners` annotation.
*/
class ExcludeDefaultListenersAnnotation extends Annotation {
ExcludeDefaultListenersAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "ExcludeDefaultListeners")
this.getType().hasQualifiedName(getAPersistencePackageName(), "ExcludeDefaultListeners")
}
}
/**
* A `@javax.persistence.ExcludeSuperclassListeners` annotation.
* A `@{javax,jakarta}.persistence.ExcludeSuperclassListeners` annotation.
*/
class ExcludeSuperclassListenersAnnotation extends Annotation {
ExcludeSuperclassListenersAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "ExcludeSuperclassListeners")
this.getType().hasQualifiedName(getAPersistencePackageName(), "ExcludeSuperclassListeners")
}
}
/**
* A `@javax.persistence.FieldResult` annotation.
* A `@{javax,jakarta}.persistence.FieldResult` annotation.
*/
class FieldResultAnnotation extends Annotation {
FieldResultAnnotation() { this.getType().hasQualifiedName("javax.persistence", "FieldResult") }
FieldResultAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "FieldResult")
}
}
/**
* A `@javax.persistence.GeneratedValue` annotation.
* A `@{javax,jakarta}.persistence.GeneratedValue` annotation.
*/
class GeneratedValueAnnotation extends Annotation {
GeneratedValueAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "GeneratedValue")
this.getType().hasQualifiedName(getAPersistencePackageName(), "GeneratedValue")
}
}
/**
* A `@javax.persistence.Id` annotation.
* A `@{javax,jakarta}.persistence.Id` annotation.
*/
class IdAnnotation extends Annotation {
IdAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Id") }
IdAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Id") }
}
/**
* A `@javax.persistence.IdClass` annotation.
* A `@{javax,jakarta}.persistence.IdClass` annotation.
*/
class IdClassAnnotation extends Annotation {
IdClassAnnotation() { this.getType().hasQualifiedName("javax.persistence", "IdClass") }
IdClassAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "IdClass") }
}
/**
* A `@javax.persistence.Inheritance` annotation.
* A `@{javax,jakarta}.persistence.Inheritance` annotation.
*/
class InheritanceAnnotation extends Annotation {
InheritanceAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Inheritance") }
InheritanceAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "Inheritance")
}
}
/**
* A `@javax.persistence.JoinColumn` annotation.
* A `@{javax,jakarta}.persistence.JoinColumn` annotation.
*/
class JoinColumnAnnotation extends Annotation {
JoinColumnAnnotation() { this.getType().hasQualifiedName("javax.persistence", "JoinColumn") }
JoinColumnAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "JoinColumn")
}
}
/**
* A `@javax.persistence.JoinColumns` annotation.
* A `@{javax,jakarta}.persistence.JoinColumns` annotation.
*/
class JoinColumnsAnnotation extends Annotation {
JoinColumnsAnnotation() { this.getType().hasQualifiedName("javax.persistence", "JoinColumns") }
JoinColumnsAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "JoinColumns")
}
}
/**
* A `@javax.persistence.JoinTable` annotation.
* A `@{javax,jakarta}.persistence.JoinTable` annotation.
*/
class JoinTableAnnotation extends Annotation {
JoinTableAnnotation() { this.getType().hasQualifiedName("javax.persistence", "JoinTable") }
JoinTableAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "JoinTable")
}
}
/**
* A `@javax.persistence.Lob` annotation.
* A `@{javax,jakarta}.persistence.Lob` annotation.
*/
class LobAnnotation extends Annotation {
LobAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Lob") }
LobAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Lob") }
}
/**
* A `@javax.persistence.ManyToMany` annotation.
* A `@{javax,jakarta}.persistence.ManyToMany` annotation.
*/
class ManyToManyAnnotation extends Annotation {
ManyToManyAnnotation() { this.getType().hasQualifiedName("javax.persistence", "ManyToMany") }
ManyToManyAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "ManyToMany")
}
}
/**
* A `@javax.persistence.ManyToOne` annotation.
* A `@{javax,jakarta}.persistence.ManyToOne` annotation.
*/
class ManyToOneAnnotation extends Annotation {
ManyToOneAnnotation() { this.getType().hasQualifiedName("javax.persistence", "ManyToOne") }
ManyToOneAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "ManyToOne")
}
}
/**
* A `@javax.persistence.MapKey` annotation.
* A `@{javax,jakarta}.persistence.MapKey` annotation.
*/
class MapKeyAnnotation extends Annotation {
MapKeyAnnotation() { this.getType().hasQualifiedName("javax.persistence", "MapKey") }
MapKeyAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKey") }
}
/**
* A `@javax.persistence.MapKeyClass` annotation.
* A `@{javax,jakarta}.persistence.MapKeyClass` annotation.
*/
class MapKeyClassAnnotation extends Annotation {
MapKeyClassAnnotation() { this.getType().hasQualifiedName("javax.persistence", "MapKeyClass") }
MapKeyClassAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKeyClass")
}
}
/**
* A `@javax.persistence.MapKeyColumn` annotation.
* A `@{javax,jakarta}.persistence.MapKeyColumn` annotation.
*/
class MapKeyColumnAnnotation extends Annotation {
MapKeyColumnAnnotation() { this.getType().hasQualifiedName("javax.persistence", "MapKeyColumn") }
MapKeyColumnAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKeyColumn")
}
}
/**
* A `@javax.persistence.MapKeyEnumerated` annotation.
* A `@{javax,jakarta}.persistence.MapKeyEnumerated` annotation.
*/
class MapKeyEnumeratedAnnotation extends Annotation {
MapKeyEnumeratedAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "MapKeyEnumerated")
this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKeyEnumerated")
}
}
/**
* A `@javax.persistence.MapKeyJoinColumn` annotation.
* A `@{javax,jakarta}.persistence.MapKeyJoinColumn` annotation.
*/
class MapKeyJoinColumnAnnotation extends Annotation {
MapKeyJoinColumnAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "MapKeyJoinColumn")
this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKeyJoinColumn")
}
}
/**
* A `@javax.persistence.MapKeyJoinColumns` annotation.
* A `@{javax,jakarta}.persistence.MapKeyJoinColumns` annotation.
*/
class MapKeyJoinColumnsAnnotation extends Annotation {
MapKeyJoinColumnsAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "MapKeyJoinColumns")
this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKeyJoinColumns")
}
}
/**
* A `@javax.persistence.MapKeyTemporal` annotation.
* A `@{javax,jakarta}.persistence.MapKeyTemporal` annotation.
*/
class MapKeyTemporalAnnotation extends Annotation {
MapKeyTemporalAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "MapKeyTemporal")
this.getType().hasQualifiedName(getAPersistencePackageName(), "MapKeyTemporal")
}
}
/**
* A `@javax.persistence.MappedSuperclass` annotation.
* A `@{javax,jakarta}.persistence.MappedSuperclass` annotation.
*/
class MappedSuperclassAnnotation extends Annotation {
MappedSuperclassAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "MappedSuperclass")
this.getType().hasQualifiedName(getAPersistencePackageName(), "MappedSuperclass")
}
}
/**
* A `@javax.persistence.MapsId` annotation.
* A `@{javax,jakarta}.persistence.MapsId` annotation.
*/
class MapsIdAnnotation extends Annotation {
MapsIdAnnotation() { this.getType().hasQualifiedName("javax.persistence", "MapsId") }
MapsIdAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "MapsId") }
}
/**
* A `@javax.persistence.NamedNativeQueries` annotation.
* A `@{javax,jakarta}.persistence.NamedNativeQueries` annotation.
*/
class NamedNativeQueriesAnnotation extends Annotation {
NamedNativeQueriesAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "NamedNativeQueries")
this.getType().hasQualifiedName(getAPersistencePackageName(), "NamedNativeQueries")
}
}
/**
* A `@javax.persistence.NamedNativeQuery` annotation.
* A `@{javax,jakarta}.persistence.NamedNativeQuery` annotation.
*/
class NamedNativeQueryAnnotation extends Annotation {
NamedNativeQueryAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "NamedNativeQuery")
this.getType().hasQualifiedName(getAPersistencePackageName(), "NamedNativeQuery")
}
}
/**
* A `@javax.persistence.NamedQueries` annotation.
* A `@{javax,jakarta}.persistence.NamedQueries` annotation.
*/
class NamedQueriesAnnotation extends Annotation {
NamedQueriesAnnotation() { this.getType().hasQualifiedName("javax.persistence", "NamedQueries") }
NamedQueriesAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "NamedQueries")
}
}
/**
* A `@javax.persistence.NamedQuery` annotation.
* A `@{javax,jakarta}.persistence.NamedQuery` annotation.
*/
class NamedQueryAnnotation extends Annotation {
NamedQueryAnnotation() { this.getType().hasQualifiedName("javax.persistence", "NamedQuery") }
NamedQueryAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "NamedQuery")
}
}
/**
* A `@javax.persistence.OneToMany` annotation.
* A `@{javax,jakarta}.persistence.OneToMany` annotation.
*/
class OneToManyAnnotation extends Annotation {
OneToManyAnnotation() { this.getType().hasQualifiedName("javax.persistence", "OneToMany") }
OneToManyAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "OneToMany")
}
}
/**
* A `@javax.persistence.OneToOne` annotation.
* A `@{javax,jakarta}.persistence.OneToOne` annotation.
*/
class OneToOneAnnotation extends Annotation {
OneToOneAnnotation() { this.getType().hasQualifiedName("javax.persistence", "OneToOne") }
OneToOneAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "OneToOne") }
}
/**
* A `@javax.persistence.OrderBy` annotation.
* A `@{javax,jakarta}.persistence.OrderBy` annotation.
*/
class OrderByAnnotation extends Annotation {
OrderByAnnotation() { this.getType().hasQualifiedName("javax.persistence", "OrderBy") }
OrderByAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "OrderBy") }
}
/**
* A `@javax.persistence.OrderColumn` annotation.
* A `@{javax,jakarta}.persistence.OrderColumn` annotation.
*/
class OrderColumnAnnotation extends Annotation {
OrderColumnAnnotation() { this.getType().hasQualifiedName("javax.persistence", "OrderColumn") }
OrderColumnAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "OrderColumn")
}
}
/**
* A `@javax.persistence.PersistenceContext` annotation.
* A `@{javax,jakarta}.persistence.PersistenceContext` annotation.
*/
class PersistenceContextAnnotation extends Annotation {
PersistenceContextAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PersistenceContext")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PersistenceContext")
}
}
/**
* A `@javax.persistence.PersistenceContexts` annotation.
* A `@{javax,jakarta}.persistence.PersistenceContexts` annotation.
*/
class PersistenceContextsAnnotation extends Annotation {
PersistenceContextsAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PersistenceContexts")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PersistenceContexts")
}
}
/**
* A `@javax.persistence.PersistenceProperty` annotation.
* A `@{javax,jakarta}.persistence.PersistenceProperty` annotation.
*/
class PersistencePropertyAnnotation extends Annotation {
PersistencePropertyAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PersistenceProperty")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PersistenceProperty")
}
}
/**
* A `@javax.persistence.PersistenceUnit` annotation.
* A `@{javax,jakarta}.persistence.PersistenceUnit` annotation.
*/
class PersistenceUnitAnnotation extends Annotation {
PersistenceUnitAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PersistenceUnit")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PersistenceUnit")
}
}
/**
* A `@javax.persistence.PersistenceUnits` annotation.
* A `@{javax,jakarta}.persistence.PersistenceUnits` annotation.
*/
class PersistenceUnitsAnnotation extends Annotation {
PersistenceUnitsAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PersistenceUnits")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PersistenceUnits")
}
}
/**
* A `@javax.persistence.PostLoad` annotation.
* A `@{javax,jakarta}.persistence.PostLoad` annotation.
*/
class PostLoadAnnotation extends Annotation {
PostLoadAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PostLoad") }
PostLoadAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "PostLoad") }
}
/**
* A `@javax.persistence.PostPersist` annotation.
* A `@{javax,jakarta}.persistence.PostPersist` annotation.
*/
class PostPersistAnnotation extends Annotation {
PostPersistAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PostPersist") }
PostPersistAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "PostPersist")
}
}
/**
* A `@javax.persistence.PostRemove` annotation.
* A `@{javax,jakarta}.persistence.PostRemove` annotation.
*/
class PostRemoveAnnotation extends Annotation {
PostRemoveAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PostRemove") }
PostRemoveAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "PostRemove")
}
}
/**
* A `@javax.persistence.PostUpdate` annotation.
* A `@{javax,jakarta}.persistence.PostUpdate` annotation.
*/
class PostUpdateAnnotation extends Annotation {
PostUpdateAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PostUpdate") }
PostUpdateAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "PostUpdate")
}
}
/**
* A `@javax.persistence.PrePersist` annotation.
* A `@{javax,jakarta}.persistence.PrePersist` annotation.
*/
class PrePersistAnnotation extends Annotation {
PrePersistAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PrePersist") }
PrePersistAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "PrePersist")
}
}
/**
* A `@javax.persistence.PreRemove` annotation.
* A `@{javax,jakarta}.persistence.PreRemove` annotation.
*/
class PreRemoveAnnotation extends Annotation {
PreRemoveAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PreRemove") }
PreRemoveAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "PreRemove")
}
}
/**
* A `@javax.persistence.PreUpdate` annotation.
* A `@{javax,jakarta}.persistence.PreUpdate` annotation.
*/
class PreUpdateAnnotation extends Annotation {
PreUpdateAnnotation() { this.getType().hasQualifiedName("javax.persistence", "PreUpdate") }
PreUpdateAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "PreUpdate")
}
}
/**
* A `@javax.persistence.PrimaryKeyJoinColumn` annotation.
* A `@{javax,jakarta}.persistence.PrimaryKeyJoinColumn` annotation.
*/
class PrimaryKeyJoinColumnAnnotation extends Annotation {
PrimaryKeyJoinColumnAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PrimaryKeyJoinColumn")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PrimaryKeyJoinColumn")
}
}
/**
* A `@javax.persistence.PrimaryKeyJoinColumns` annotation.
* A `@{javax,jakarta}.persistence.PrimaryKeyJoinColumns` annotation.
*/
class PrimaryKeyJoinColumnsAnnotation extends Annotation {
PrimaryKeyJoinColumnsAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "PrimaryKeyJoinColumns")
this.getType().hasQualifiedName(getAPersistencePackageName(), "PrimaryKeyJoinColumns")
}
}
/**
* A `@javax.persistence.QueryHint` annotation.
* A `@{javax,jakarta}.persistence.QueryHint` annotation.
*/
class QueryHintAnnotation extends Annotation {
QueryHintAnnotation() { this.getType().hasQualifiedName("javax.persistence", "QueryHint") }
QueryHintAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "QueryHint")
}
}
/**
* A `@javax.persistence.SecondaryTable` annotation.
* A `@{javax,jakarta}.persistence.SecondaryTable` annotation.
*/
class SecondaryTableAnnotation extends Annotation {
SecondaryTableAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "SecondaryTable")
this.getType().hasQualifiedName(getAPersistencePackageName(), "SecondaryTable")
}
}
/**
* A `@javax.persistence.SecondaryTables` annotation.
* A `@{javax,jakarta}.persistence.SecondaryTables` annotation.
*/
class SecondaryTablesAnnotation extends Annotation {
SecondaryTablesAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "SecondaryTables")
this.getType().hasQualifiedName(getAPersistencePackageName(), "SecondaryTables")
}
}
/**
* A `@javax.persistence.SequenceGenerator` annotation.
* A `@{javax,jakarta}.persistence.SequenceGenerator` annotation.
*/
class SequenceGeneratorAnnotation extends Annotation {
SequenceGeneratorAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "SequenceGenerator")
this.getType().hasQualifiedName(getAPersistencePackageName(), "SequenceGenerator")
}
}
/**
* A `@javax.persistence.SqlResultSetMapping` annotation.
* A `@{javax,jakarta}.persistence.SqlResultSetMapping` annotation.
*/
class SqlResultSetMappingAnnotation extends Annotation {
SqlResultSetMappingAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "SqlResultSetMapping")
this.getType().hasQualifiedName(getAPersistencePackageName(), "SqlResultSetMapping")
}
}
/**
* A `@javax.persistence.SqlResultSetMappings` annotation.
* A `@{javax,jakarta}.persistence.SqlResultSetMappings` annotation.
*/
class SqlResultSetMappingsAnnotation extends Annotation {
SqlResultSetMappingsAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "SqlResultSetMappings")
this.getType().hasQualifiedName(getAPersistencePackageName(), "SqlResultSetMappings")
}
}
/**
* A `@javax.persistence.Table` annotation.
* A `@{javax,jakarta}.persistence.Table` annotation.
*/
class TableAnnotation extends Annotation {
TableAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Table") }
TableAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Table") }
}
/**
* A `@javax.persistence.TableGenerator` annotation.
* A `@{javax,jakarta}.persistence.TableGenerator` annotation.
*/
class TableGeneratorAnnotation extends Annotation {
TableGeneratorAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "TableGenerator")
this.getType().hasQualifiedName(getAPersistencePackageName(), "TableGenerator")
}
}
/**
* A `@javax.persistence.Temporal` annotation.
* A `@{javax,jakarta}.persistence.Temporal` annotation.
*/
class TemporalAnnotation extends Annotation {
TemporalAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Temporal") }
TemporalAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Temporal") }
}
/**
* A `@javax.persistence.Transient` annotation.
* A `@{javax,jakarta}.persistence.Transient` annotation.
*/
class TransientAnnotation extends Annotation {
TransientAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Transient") }
TransientAnnotation() {
this.getType().hasQualifiedName(getAPersistencePackageName(), "Transient")
}
}
/**
* A `@javax.persistence.UniqueConstraint` annotation.
* A `@{javax,jakarta}.persistence.UniqueConstraint` annotation.
*/
class UniqueConstraintAnnotation extends Annotation {
UniqueConstraintAnnotation() {
this.getType().hasQualifiedName("javax.persistence", "UniqueConstraint")
this.getType().hasQualifiedName(getAPersistencePackageName(), "UniqueConstraint")
}
}
/**
* A `@javax.persistence.Version` annotation.
* A `@{javax,jakarta}.persistence.Version` annotation.
*/
class VersionAnnotation extends Annotation {
VersionAnnotation() { this.getType().hasQualifiedName("javax.persistence", "Version") }
VersionAnnotation() { this.getType().hasQualifiedName(getAPersistencePackageName(), "Version") }
}
/** The interface `javax.persistence.EntityManager`. */
/** The interface `{javax,jakarta}.persistence.EntityManager`. */
class TypeEntityManager extends Interface {
TypeEntityManager() { this.hasQualifiedName("javax.persistence", "EntityManager") }
TypeEntityManager() { this.hasQualifiedName(getAPersistencePackageName(), "EntityManager") }
/** Gets a method named `createQuery` declared in the `EntityManager` interface. */
Method getACreateQueryMethod() {
@@ -675,9 +736,9 @@ class TypeEntityManager extends Interface {
}
}
/** The interface `javax.persistence.Query`, which represents queries in the Java Persistence Query Language. */
/** The interface `{javax,jakarta}.persistence.Query`, which represents queries in the Java Persistence Query Language. */
class TypeQuery extends Interface {
TypeQuery() { this.hasQualifiedName("javax.persistence", "Query") }
TypeQuery() { this.hasQualifiedName(getAPersistencePackageName(), "Query") }
/** Gets a method named `setParameter` declared in the `Query` interface. */
Method getASetParameterMethod() {

View File

@@ -23,6 +23,7 @@ class SimpleTypeSanitizer extends DataFlow::Node {
this.getType()
.(RefType)
.getASourceSupertype*()
.hasQualifiedName("java.time.temporal", "TemporalAccessor")
.hasQualifiedName("java.time.temporal", "TemporalAccessor") or
this.getType() instanceof EnumType
}
}