2015-06-23 4 views
0

Я пытаюсь создать автогенерированное свойство GUID на всех узлах cq: PageContent. Это будет похоже на свойство jcr: uuid, но будет сохраняться с установкой контента/репликации/пакета (тогда как jcr: uuid для элемента контента изменяется между разными средами).Как генерирует Jackrabbit jcr: uuid (в AEM)?

Я пытаюсь определить, как AEM/JCR генерирует свойство jcr: uuid при создании узла. CND определение собственности является:

[mix:referenceable] 
    mixin 
    - jcr:uuid (string) mandatory autocreated protected initialize 

Я попытался определение моего свойства GUID в подобной усадьбе, указав атрибуты autocreated и initialize, но это не приводит к автоматической генерации свойства.

Может ли кто-нибудь указать мне на источник jcr: поколение uuid?


Как и в сторону, я задал соответствующий вопрос на Adobe Community Forum: http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.5_ciot.html/forum__bnxr-i_am_tryingtocreat.html

+0

Не можете просто создать хэш с пути? – Thomas

+0

Вопрос не в том, как сгенерировать идентификатор, а в том, как создается jcr: uuid; как вызывается генерация этого идентификатора. Я пытаюсь понять, автоматически ли этот идентификатор генерируется JCR (и если да, как это сделать для других свойств), или если вызывается обработчик событий. –

+0

Я нашел этот пост. возможно, это поможет вам: http://jackrabbit.510166.n4.nabble.com/How-Does-Jack-Rabbit-Generate-Its-UUID-td3297335.html Короче говоря, это зависит от реализации JCR в случае CQ это Jackrabbit, и там вы должны быть в состоянии заставить источник видеть, как это делается. – Thomas

ответ

1

Вы не упоминаем, какая версия AEM (так ли вы имеете дело с Jackrabbit или дуба), но механизм оказывается в основном одинаковым.

При назначении значения по умолчанию существует несколько жестко заданных системных имен свойств, которые получают специальное обращение (jcr: uuid является одним из них). Если имя свойства, которому присвоено значение по умолчанию , не соответствует любому из особых случаев, оно возвращает статический список значений по умолчанию из определения свойства (например, указанного в файле CND).

Таким образом, похоже, что вы не можете копировать этот механизм, чтобы назначить собственное динамическое значение по умолчанию для произвольного свойства. Вам нужно будет реализовать свой собственный прослушиватель событий или что-то в этом роде.


Jackrabbit: См реализацию setDefaultValues и computeSystemGeneratedPropertyValues

Дуб: См реализацию autoCreateProperty

+0

Большое спасибо. Это в настоящее время на 5.6.1, но скоро будет 6.1. –

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