2016-03-30 1 views
0

Я хочу написать Cypher правила jQAssistant, который проверяет, все ли методы общественного EJB являются annoated либо @RolesAllowed или @PermitAll.Использование jQAssistant для проверки того, что все методы общественного EJB аннотируется @RolesAllowed или @PermitAll

Возможно ли это? Поскольку я новичок в языке запросов Cypher Neo4j, у меня возникают проблемы с формулировкой условия «не существует» в Cypher, чтобы найти «все общедоступные методы в классах EJB (= классы, содержащие аннотацию @Stateless), которые не аннотируются с помощью @RolesAllowed или @PermitAll ».

+0

@ingrid, очевидно, ваш ответ неправильный ... – zebra

ответ

0

Трюк помещает не существующую часть в предложение where, например.

match 
    (:Stateless)-[:DECLARES]->(m:Method) 
where 
    m.visibility ="public" 
    and not (
    (m)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(:Type{fqn:"...PermitAll") 
    or 
    ... 
) 
return 
    m 

Надеюсь, это иллюстрирует идею, ее довольно сложно написать на планшете. На следующей неделе я могу привести более продвинутый пример.

+0

Отлично! Это именно то решение, которое я искал. – zebra

+0

Замечательно читать! Решение может быть еще более элегантным, создавая концепции для PermitAll и AllowedRoles, они могут даже быть кандидатами на плагин jQA EJB3. –

Смежные вопросы