@Override public void visitClass(ClassDescriptor classDescriptor) throws CheckedAnalysisException { XClass xclass = Global.getAnalysisCache().getClassAnalysis(XClass.class, classDescriptor); // Is this class an obligation type? Obligation thisClassObligation = database.getFactory().getObligationByType(xclass.getClassDescriptor()); // Scan methods for uses of obligation-related annotations for (XMethod xmethod : xclass.getXMethods()) { // Is this method marked with @CreatesObligation? if (thisClassObligation != null) { if (xmethod.getAnnotation(createsObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.ADD, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } // Is this method marked with @DischargesObligation? if (xmethod.getAnnotation(dischargesObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.DEL, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } } addObligations(xmethod); } }
@Override public void visitClass(ClassDescriptor classDescriptor) throws CheckedAnalysisException { XClass xclass = Global.getAnalysisCache().getClassAnalysis(XClass.class, classDescriptor); // Is this class an obligation type? Obligation thisClassObligation = database.getFactory().getObligationByType(xclass.getClassDescriptor()); // Scan methods for uses of obligation-related annotations for (XMethod xmethod : xclass.getXMethods()) { // Is this method marked with @CreatesObligation? if (thisClassObligation != null) { if (xmethod.getAnnotation(createsObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.ADD, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } // Is this method marked with @DischargesObligation? if (xmethod.getAnnotation(dischargesObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.DEL, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } } addObligations(xmethod); } }