AttributeFilterChain { public AttributeFilterChain addFirst(AttributeFilter attributeFilter) { filters.addFirst(attributeFilter); return this; } AttributeFilterChain();  AttributeFilterChain(AttributeFilter filter);  AttributeFilterChain(List<AttributeFilter> filters); Object getAttribute(UaNode node, AttributeId attributeId); Object getAttribute(@Nullable Session session, UaNode node, AttributeId attributeId); void setAttribute(UaNode node, AttributeId attributeId, Object value); void setAttribute(@Nullable Session session, UaNode node, AttributeId attributeId, Object value); AttributeFilterChain addFirst(AttributeFilter attributeFilter); AttributeFilterChain addFirst(AttributeFilter... attributeFilters); AttributeFilterChain addLast(AttributeFilter attributeFilter); AttributeFilterChain addLast(AttributeFilter... attributeFilters);  }
@Test public void testAddFirst() { AttributeFilterChain chain = new AttributeFilterChain(); chain.addFirst( AttributeFilters.getValue(ctx -> new DataValue(new Variant("A"))), AttributeFilters.getValue(ctx -> new DataValue(new Variant("B"))) ); DataValue value = (DataValue) chain.getAttribute(null, AttributeId.Value); assertEquals(value.getValue().getValue(), "B"); }