Trong lớp này cũng sử dụng cấu trúc dữ liệu ánh xạ HashMap như ở máy trạng thái. Key ở đây là tên đầy đủ của phương thức để phân biệt với nhau, nên gồm toàn bộ thông tin : kiểu trả về, tên lớp, tên method, tham số đầu vào. Còn value là giá trị thời gian đọc được trong file xml.
Trong package này cũng có 2 lớp ClassifierRole và ListClassifierRole để đọc thông tin về các lớp của chương trình giống như trong package tạo máy trạng thái.
Do thông tin về thời gian ràng buộc được lưu trữ trong thẻ như hình trên, ta sẽ đọc tuần tự theo các bước như sau :
o Ta sẽ đọc thông tin về lớp trước để dùng ở bước sau, việc này thực hiện qua lớp ListClassifierRole:
ListClassifierRole lCRole = new ListClassifierRole(xmlFile);
o Đọc tất các nút lưu thông tin thông điệp và lưu vào 1 danh sách các node :
NodeList nList = doc.getElementsByTagName("UML:Message");
o Duyệt lần lượt từng node chứa thông tin message. Trong thuộc tính name ta sẽ lấy được tên lớp để cho vào key của Hashmap. Còn tên lớp sẽ lấy nhờ vào danh sách các lớp đã đọc ở bước đầu tiên. Từ đó ghép vào ta có key đầy đủ của một ràng buộc :
Đọc file xml ta thấy thông tin ràng buộc thời gian lưu trong node con mức thứ 2 bên trong nút UML:Message.
NodeList childN = node.getChildNodes();
node = childN.item(1); //chính là node <UML:ModelElement.taggedValue> Tiếp tục đi vào các node con mức tiếp theo:
childN = node.getChildNodes(); //các node có tên <UML:TaggedValue>
Ở mức này có khá nhiều node và ta sẽ duyệt lần lượt các node này để lấy ra node có thuộc tính “tag” là “constraints”. Lấy giá trị của thuộc tính “value” của node đó sẽ được thời gian:
Như vậy lớp này đã đọc ràng buộc thời gian từ xml và lưu vào biến HashMap constraintMap. Và trong khi thực thi mã aspect sẽ lấy thông tin thời gian từ đây để so sánh với thời gian thực hiện phương thức để xem có hợp lệ không.