2012-05-13 1 views
1

Фон: Я думал о том, чтобы принять сервисный микс, включая Apache Sling, Jackrabbit и Jetty, для целей управления контентом в рамках веб-сайтов. На этом этапе я хотел бы представить себе, что можно было бы создать платформу для создания мобильного контента с помощью DAV для доступа к репозиторию контента JCR. Вопрос о версии в JCR 2.0 (JSR-283) не позволяет мне задаться вопросом, как провести JCR-управление версиями через HTTP?Версии JCR-узлов через DAV-howto?

Подробнее: Я рассматриваю то, что, как я полагаю, будет section 15 of JSR-283, served up in HTML format from Adobe. В этом разделе JSR-283 представляет концепцию управления версиями для узлов JCR.

Я понимаю, то, that there's a VersionManager API в JSR-283 совместимые релизы Jackrabbit. Это служит для объяснения того, как можно было бы проводить операции управления версиями JCR (JSR-283) через API. Итак, но как пользовательский агент может провести операцию управления версиями через DAV?

Я хотел бы ответить на этот вопрос для себя, но я даже не знаю с чего начать.

Есть ли другая часть JSR-283, объясняющая, как операции проверки или проверки версии транслируются в HTTP-запросы? Это вопрос простых свойств DAV? Я даже близок к знаку?

/Рецензирование требуется, лол

+0

Мол, как бы узел 'Checkin' и операции 'Checkout' перевести DAV/HTTP запросы? (и операции «контрольной точки», аналогично) –

+0

Читайте больше о WebDAV, я вижу, что RFC 3253 определяет расширения версий для WebDAV. [...] –

+0

Я понимаю, что структура управления версиями JCR эффективно поворачивается вокруг типа узла mix mix: versionable JCR ([Jackrabbit Wiki] (http://wiki.apache.org/jackrabbit/mix%3Aversionable)). Итак, если узел создается как тип 'mix: versionable', то я предполагаю, что обычные операции WebDAV' checkin' и 'checkout', которые могут быть инкапсулированы с помощью API WebDAV, что, вероятно, будут такими, как проводить операции проверки/проверки JCR на доступных версиях узлов. Это, я полагаю, ответит на этот вопрос. [...] –

ответ

0

Я понимаю, что структура управления версиями JCR эффективно поворачивается вокруг смеси: versionable JCR подмешать типа узла (Jackrabbit Wiki). Таким образом, если узел создается как тип mix: versionable, то я полагаю, что обычные операции проверки и проверки WebDAV - как может быть инкапсулировано с помощью API WebDAV, - вероятно, будут такими, как можно было бы проводить операции проверки/проверки JCR на версиях. Это, я полагаю, ответит, что большая часть вопроса

Я не вижу каких-либо точных дополнений DAV к операции контрольной точки JCR, но если это просто проверка с последующей проверкой, как объясняет документация, тогда было бы легко достаточно, чтобы подражать с помощью DAV - таким образом, сделав комплимент этой операции JCR.

1

Существует документ (JCR_Webdav_Protocol.doc - Apache Jackrabbit), описывающие соответствие между методом WebDAV вызовов и Jackrabbit JCR вызовов API на сайте Jackrabbit:

http://jackrabbit.apache.org/JCR_Webdav_Protocol.doc

Хотя этот документ последний раз обновлялась 29.March 2006 Мне было очень полезно сделать первые шаги.

Я проследил сеанс с Microsoft Office 2010 против моего репозитория по умолчанию Jackrabbit, используя Word и Wireshark. Следующий вид сценария оболочки выполняет те же действия, что и curl и libreoffice, на * nix.


Как вы можете видеть, УДАЛИТЬ, ЗАГРУЗИТЬ, управления версиями WebDAV Document вызовы выполняются авансовые к действиям в Word.

В Справочнике по просмотру открывается URL-адрес в вашем экземпляре Internet Explorer.

Microsoft Word извлекает свойства документа (PROPFIND), а затем открывает (GET) и блокирует документ. Он также запрашивает свойства по% EE% B3% B0 по неизвестным причинам (UTF-8 (hex) 0xEE 0xB3 0xB0 (eeb3b0) или UTF-16 "\ uECF0" aka "" из диапазона личного использования набора символов Unicode).

После сохранения документа в Microsoft Word он будет загружать (PUT) и обновлять свойства (PROPPATCH) вашего узла Document, чтобы включить штампы Win32CreationTime, Win32LastModifiedTime и Win32LastAccessTime.

Закрытие документа в Word позволит освободить активированный замок с помощью UNLOCK.

Документ CHECKIN снова выполняется вручную, чтобы завершить жизненный цикл версии.

Отчет по дереву версий можно также получить из WebDAV.

#!/bin/sh 

# Delete document 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X DELETE -v http://localhost:7001/repository/default/test.docx 

# Upload document 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PUT -v http://localhost:7001/repository/default/test.docx --data-binary "@test.docx" 

# Version-Control document 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X VERSION-CONTROL -v http://localhost:7001/repository/default/test.docx 

# Checkout document 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X CHECKOUT -v http://localhost:7001/repository/default/test.docx 

# Browse directory 
curl -A "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" -X GET -v http://localhost:7001/repository/default/ 

# Open document in Word 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPFIND -v http://localhost:7001/repository/default/test.docx | xmllint --format - 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X GET -v http://localhost:7001/repository/default/test.docx -O 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPFIND -v http://localhost:7001/repository/default/test.docx%EE%B3%B0 
cat > LOCK_document.xml <<EOF 
<?xml version="1.0" encoding="utf-8" ?> 
<D:lockinfo xmlns:D="DAV:"> 
    <D:lockscope> 
    <D:exclusive/> 
    </D:lockscope> 
    <D:locktype> 
    <D:write/> 
    </D:locktype> 
    <D:owner> 
    <D:href>WINDOWSDOMAIN\USER</D:href> 
    </D:owner> 
</D:lockinfo> 
EOF 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X LOCK -v http://localhost:7001/repository/default/test.docx --data "@LOCK_document.xml" | xmllint --format - | tee LOCK_document.txt 
export LOCK_token=$(grep opaquelocktoken LOCK_document.txt | sed 's/^.*opaquelocktoken:/<opaquelocktoken:/' | sed 's/<\/D:href>.*$/>/') 

curl -A "Microsoft Office Existence Discovery" -X HEAD -v http://localhost:7001/repository/default/test.docx 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X OPTIONS -v http://localhost:7001/ -H "translate: f" 

# Edit document in Word 
libreoffice test.docx 

# Save document in Word 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X HEAD -v http://localhost:7001/repository/default/test.docx 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PUT -v http://localhost:7001/repository/default/test.docx -H "If: (${LOCK_token})" --data-binary "@test.docx" 
cat > PROPPATCH_document.xml <<EOF 
<?xml version="1.0" encoding="utf-8" ?> 
<D:propertyupdate xmlns:D="DAV:" xmlns:Z="urn:schemas-microsoft-com:"> 
    <D:set> 
    <D:prop> 
     <Z:Win32CreationTime>Mon, 09 Mar 2015 15:24:36 GMT</Z:Win32CreationTime> 
     <Z:Win32LastAccessTime>Mon, 16 Mar 2015 13:22:40 GMT</Z:Win32LastAccessTime> 
     <Z:Win32LastModifiedTime>Mon, 16 Mar 2015 13:22:40 GMT</Z:Win32LastModifiedTime> 
    </D:prop> 
    </D:set> 
</D:propertyupdate> 
EOF 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPPATCH -v http://localhost:7001/repository/default/test.docx -H "If: (${LOCK_token})" --data "@PROPPATCH_document.xml" | xmllint --format - 

# Close document in Word 
curl -A "Microsoft Office Existence Discovery" -X HEAD -v http://localhost:7001/repository/default/test.docx 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X UNLOCK -v http://localhost:7001/repository/default/test.docx -H "Lock-Token: ${LOCK_token}" 

# Checkin document 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X CHECKIN -v http://localhost:7001/repository/default/test.docx 

# Version tree report on document 
cat > REPORT_version-tree.xml <<EOF 
<?xml version="1.0" encoding="utf-8" ?> 
<D:version-tree xmlns:D="DAV:"> 
<D:prop> 
    <D:version-name/> 
</D:prop> 
</D:version-tree> 
EOF 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X REPORT -v http://localhost:7001/repository/default/test.docx --data "@REPORT_version-tree.xml" | xmllint --format - 

У меня были проблемы с возможностями автоматической версии Jackrabbit, которые, очевидно, еще не реализованы.

https://issues.apache.org/jira/browse/JCR-1348

#<!-- 
# see http://www.webdav.org/specs/rfc3253.html#PROPERTY_auto-version 
#  <D:auto-version>checkout-checkin</D:auto-version> 
#  <D:auto-version>checkout-unlocked-checkin</D:auto-version> 
#  <D:auto-version>checkout</D:auto-version> 
#  <D:auto-version>locked-checkout</D:auto-version> 
#--> 
cat > PROPPATCH_auto-version.xml <<EOF 
<?xml version="1.0" encoding="utf-8" ?> 
<D:propertyupdate xmlns:D="DAV:"> 
    <D:set> 
    <D:prop> 
     <D:auto-version>checkout-checkin</D:auto-version> 
    </D:prop> 
    </D:set> 
</D:propertyupdate> 
EOF 
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPPATCH -v http://localhost:7001/repository/default/test.docx -H "If: (${LOCK_token})" --data "@PROPPATCH_auto-version.xml" | xmllint --format - 

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

  • Нет связанных вопросов^_^