public final int getModifiers() { return Flags.toModifiers(getFlags()); }
public final int getModifiers() { return Flags.toModifiers(getFlags()); }
public final boolean isPublic() { return Flags.testAny(getFlags(), Flags.PUBLIC); }
public final boolean isStatic() { return Flags.testAny(getFlags(), Flags.STATIC); }
public final boolean isPrivate() { return Flags.testAny(getFlags(), Flags.PRIVATE); }
public final boolean isSynthetic() { return Flags.testAny(getFlags(), Flags.SYNTHETIC); }
public final boolean isDeprecated() { return Flags.testAny(getFlags(), Flags.DEPRECATED); }
public final boolean isEnumConstant() { return Flags.testAny(getFlags(), Flags.ENUM); }
public final boolean isNonPublic() { return !Flags.testAny(getFlags(), Flags.PUBLIC); }
public final boolean isProtected() { return Flags.testAny(getFlags(), Flags.PROTECTED); }
public final boolean isSynthetic() { return Flags.testAny(getFlags(), Flags.SYNTHETIC); }
public final boolean isFinal() { return Flags.testAny(getFlags(), Flags.FINAL); }
public final boolean isProtected() { return Flags.testAny(getFlags(), Flags.PROTECTED); }
public final boolean isDeprecated() { return Flags.testAny(getFlags(), Flags.DEPRECATED); }
public final boolean isPackagePrivate() { return !Flags.testAny(getFlags(), Flags.PUBLIC | Flags.PROTECTED | Flags.PRIVATE); }
private int tweakForSerialization(FieldDefinition fd, TypeDefinition td) { // Probably field is kept for backwards serialization compatibility if(!fd.isStatic() && Types.isInstance(td, "java/io/Serializable")) { return 10; } if(Flags.testAny(fd.getFlags(), Flags.TRANSIENT)) { return 30; } return 0; }
@FieldVisitor public void visitField(FieldDefinition fd, FieldContext fc) { if(!Flags.testAny(fd.getFlags(), Flags.VOLATILE | Flags.FINAL | Flags.TRANSIENT | Flags.STATIC)) { fc.report("NonFinalFieldInImmutableClass", 0); } } }
public static AccessLevel of(FieldDefinition fd) { TypeDefinition td = fd.getDeclaringType(); return ofFlags(td.getFlags()).min(ofFlags(fd.getFlags())); } }
private void checkFieldRead(Expression expr, MethodContext mc) { if (Nodes.isFieldRead(expr)) { FieldDefinition fd = ((FieldReference) expr.getOperand()).resolve(); if (fd != null && !Flags.testAny(fd.getFlags(), Flags.VOLATILE)) { mc.report("SpinLoopOnField", 0, expr, Roles.FIELD.create(fd)); } } } }
@AstVisitor(nodes=AstNodes.EXPRESSIONS) public void visitCode(Expression expr, NodeChain nc, MethodContext mc, MethodDefinition md, TypeDefinition td) { if(expr.getCode() == AstCode.PutField) { FieldDefinition fd = ((FieldReference) expr.getOperand()).resolve(); if (fd.getDeclaringType().isEquivalentTo(td) && !nc.isSynchronized() && !Flags.testAny(fd.getFlags(), Flags.VOLATILE) && reportedFields.add(fd)) { mc.report("MutableServletField", 0, expr); } } } }