You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by ja...@apache.org on 2008/01/22 16:36:27 UTC
svn commit: r614218 - in /lenya/sandbox/modules/importfrom12: ./ config/
config/cocoon-xconf/ java/ java/src/ java/src/org/ java/src/org/apache/
java/src/org/apache/lenya/ java/src/org/apache/lenya/cms/
java/src/org/apache/lenya/cms/importfrom12/ resou...
Author: jann
Date: Tue Jan 22 07:36:23 2008
New Revision: 614218
URL: http://svn.apache.org/viewvc?rev=614218&view=rev
Log:
A start for an import-from-lenya12 module. At the moment it simply imports the content but no resources and other stuff
Added:
lenya/sandbox/modules/importfrom12/
lenya/sandbox/modules/importfrom12/config/
lenya/sandbox/modules/importfrom12/config/cocoon-xconf/
lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf
lenya/sandbox/modules/importfrom12/config/module.xml
lenya/sandbox/modules/importfrom12/java/
lenya/sandbox/modules/importfrom12/java/src/
lenya/sandbox/modules/importfrom12/java/src/org/
lenya/sandbox/modules/importfrom12/java/src/org/apache/
lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/
lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/
lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/
lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java
lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java
lenya/sandbox/modules/importfrom12/resources/
lenya/sandbox/modules/importfrom12/resources/i18n/
lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml
lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml
lenya/sandbox/modules/importfrom12/usecases/
lenya/sandbox/modules/importfrom12/usecases/importcontent.jx
Added: lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf (added)
+++ lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf Tue Jan 22 07:36:23 2008
@@ -0,0 +1,8 @@
+<xconf xpath="/cocoon/usecases"
+ unless="/cocoon/usecases/component-instance[@name = 'importfrom12.importcontent']">
+ <component-instance name="importfrom12.importcontent"
+ logger="lenya.usecases.importfrom12.importcontent"
+ class="org.apache.lenya.cms.importfrom12.ImportContent">
+ <view template="modules/importfrom12/usecases/importcontent.jx" menu="false"/>
+ </component-instance>
+</xconf>
\ No newline at end of file
Added: lenya/sandbox/modules/importfrom12/config/module.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/config/module.xml?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/config/module.xml (added)
+++ lenya/sandbox/modules/importfrom12/config/module.xml Tue Jan 22 07:36:23 2008
@@ -0,0 +1,11 @@
+<module xmlns="http://apache.org/lenya/module/1.0">
+ <id>org.myproject.lenya.modules.importfrom12</id>
+ <depends module="org.apache.lenya.modules.usecase"/>
+ <package>org.apache.lenya.modules</package>
+ <version>0.1-dev</version>
+ <name>Import Content from a lenya-1.2 publication</name>
+ <lenya-version>1.0-dev</lenya-version>
+ <description>
+ Module to import Content from a lenya-1.2 publication
+ </description>
+</module>
Added: lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java (added)
+++ lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java Tue Jan 22 07:36:23 2008
@@ -0,0 +1,243 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.lenya.cms.importfrom12;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.lenya.cms.cocoon.source.SourceUtil;
+import org.apache.lenya.cms.linking.LinkConverter;
+import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.publication.Area;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.DocumentManager;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.ResourceType;
+import org.apache.lenya.cms.site.SiteNode;
+import org.apache.lenya.cms.site.SiteStructure;
+import org.apache.lenya.cms.site.tree.DefaultSiteTree;
+import org.apache.lenya.xml.DocumentHelper;
+import org.apache.lenya.xml.NamespaceHelper;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Import content.
+ */
+public class ContentImporter extends AbstractLogEnabled {
+
+ private ServiceManager manager;
+
+ /**
+ * Ctor.
+ *
+ * @param manager
+ * The service manager.
+ * @param logger
+ * The logger.
+ */
+ public ContentImporter(ServiceManager manager, Logger logger) {
+ this.manager = manager;
+ enableLogging(logger);
+ }
+
+ /**
+ * Imports content into an area.
+ *
+ * @param area
+ * The area.
+ * @param path
+ * The path containing the content.
+ * @throws Exception
+ * if an error occurs.
+ */
+ public void importContent(Area area, String path) throws Exception {
+ importContent(area.getPublication(), area, path);
+ }
+
+ /**
+ * Imports content from a different publication into an area.
+ *
+ * @param srcPub
+ * The source publication.
+ * @param area
+ * The area.
+ * @param path
+ * The path containing the content.
+ * @throws Exception
+ * if an error occurs.
+ */
+ public void importContent(Publication srcPub, Area area, String path)
+ throws Exception {
+ getLogger().info("Importing documents into area [" + area + "]");
+
+ String baseUri = "file://" + path;
+ String sitetreeUri = baseUri + "/sitetree.xml";
+
+ org.w3c.dom.Document xml = SourceUtil
+ .readDOM(sitetreeUri, this.manager);
+ NamespaceHelper helper = new NamespaceHelper(
+ DefaultSiteTree.NAMESPACE_URI, "", xml);
+
+ Element siteElement = xml.getDocumentElement();
+ importChildren(area, helper, siteElement, baseUri, "");
+
+ convertLinks(srcPub, area);
+ }
+
+ protected void importElement(Area area, NamespaceHelper helper,
+ Element element, String baseUri, String parentPath) {
+ String path = parentPath + "/" + element.getAttribute("id");
+
+ boolean visible = true;
+ String visibleString = element.getAttribute("visibleinnav");
+ if (visibleString != null && !visibleString.equals("")) {
+ visible = Boolean.valueOf(visibleString).booleanValue();
+ }
+
+ Element[] labelElements = helper.getChildren(element, "label");
+ for (int i = 0; i < labelElements.length; i++) {
+ importDocument(area, labelElements[i], baseUri, path, visible);
+ }
+ importChildren(area, helper, element, baseUri, path);
+ }
+
+ protected void importDocument(Area area, Element element, String baseUri,
+ String path, boolean visibleInNav) {
+
+ // We need to know how forrest was going to determine the Namespace from
+ // document root xml element :-( This should be made configurable!
+ // see http://forrest.apache.org/docs_0_80/cap.html and parameter-doctype.xmap
+ // in a 1.2 publication.
+ String forrest_doctype_rule = "namespace";
+
+ String language = element.getAttribute("xml:lang");
+ String navigationTitle = DocumentHelper.getSimpleElementText(element);
+
+ String contentUri = baseUri + path + "/index_" + language + ".xml";
+ String metaUri = contentUri + ".meta";
+
+ DocumentManager docManager = null;
+ ServiceSelector selector = null;
+ ResourceType resourceType = null;
+ SourceResolver resolver = null;
+ try {
+
+ org.w3c.dom.Document metaDoc = DocumentHelper.createDocument(
+ "http://apache.org/cocoon/lenya/page-envelope/1.0",
+ "lenya:document", null);
+ Element root = metaDoc.getDocumentElement();
+
+ org.w3c.dom.Document xml = SourceUtil.readDOM(contentUri,
+ this.manager);
+
+// String doctype = this.getUsedDoctype(xml.getDocumentElement(),"jkl");
+ String resourceTypeName="xhtml";
+ String mimeType = "application/xhtml+xml";
+
+
+ NamespaceHelper helper = new NamespaceHelper(
+ "http://apache.org/cocoon/lenya/page-envelope/1.0", "", xml);
+
+ Element metaElement = helper.getFirstChild(
+ xml.getDocumentElement(), "meta");
+ Node newNode = metaDoc.importNode(metaElement, true);
+ root.appendChild(newNode);
+
+ selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE
+ + "Selector");
+ resourceType = (ResourceType) selector.select(resourceTypeName);
+
+ docManager = (DocumentManager) this.manager
+ .lookup(DocumentManager.ROLE);
+ Document newDoc;
+ SiteStructure site = area.getSite();
+ if (!site.contains(path)
+ || site.getNode(path).getLanguages().length == 0) {
+ newDoc = docManager.add(area.getPublication().getFactory(),
+ resourceType, contentUri, area.getPublication(), area
+ .getName(), path, language, "xml",
+ navigationTitle, visibleInNav);
+ newDoc.setMimeType(mimeType);
+ } else {
+ SiteNode node = site.getNode(path);
+ Document doc = node.getLink(node.getLanguages()[0])
+ .getDocument();
+ newDoc = docManager.addVersion(doc, area.getName(), language,
+ true);
+ resolver = (SourceResolver) this.manager
+ .lookup(SourceResolver.ROLE);
+ SourceUtil.copy(resolver, contentUri, newDoc.getOutputStream());
+ newDoc.getLink().setLabel(navigationTitle);
+ }
+
+ String dcNamespace = "http://purl.org/dc/elements/1.1/";
+
+
+ NamespaceHelper dcHelper = new NamespaceHelper(dcNamespace, "dc", xml);
+ Element[] dcElements = dcHelper.getChildren(metaElement);
+
+ MetaData meta = newDoc.getMetaData(dcNamespace);
+
+ for (int i = 0; i < dcElements.length; i++) {
+ String key = dcElements[i].getLocalName();
+ String value = DocumentHelper
+ .getSimpleElementText(dcElements[i]);
+ meta.setValue(key, value);
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (docManager != null) {
+ this.manager.release(docManager);
+ }
+ if (selector != null) {
+ this.manager.release(selector);
+ }
+ if (resolver != null) {
+ this.manager.release(resolver);
+ }
+ }
+ }
+
+ protected void importChildren(Area area, NamespaceHelper helper,
+ Element element, String baseUri, String path) {
+ Element[] elements = helper.getChildren(element, "node");
+ for (int i = 0; i < elements.length; i++) {
+ importElement(area, helper, elements[i], baseUri, path);
+ }
+ }
+
+ protected void convertLinks(Publication srcPub, Area area) {
+ Document[] docs = area.getDocuments();
+ for (int i = 0; i < docs.length; i++) {
+ LinkConverter converter = new LinkConverter(this.manager,
+ getLogger());
+ converter.convertUrlsToUuids(srcPub, docs[i], false);
+ }
+ }
+
+ protected String getUsedDoctype(Element rootElement, String rule) {
+ String test = rootElement.getBaseURI();
+ return null;
+ }
+
+}
Added: lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java (added)
+++ lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java Tue Jan 22 07:36:23 2008
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.lenya.cms.importfrom12;
+
+import java.io.File;
+
+import org.apache.lenya.cms.cocoon.source.SourceUtil;
+import org.apache.lenya.cms.importfrom12.ContentImporter;
+import org.apache.lenya.cms.publication.Area;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.cms.publication.PublicationUtil;
+import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.usecase.AbstractUsecase;
+
+/**
+ * Import content.
+ */
+public class ImportContent extends AbstractUsecase {
+
+ protected void initParameters() {
+ super.initParameters();
+
+ Publication publication;
+ try {
+ publication = PublicationUtil.getPublicationFromUrl(this.manager, getDocumentFactory(),
+ getSourceURL());
+ } catch (PublicationException e) {
+ throw new RuntimeException(e);
+ }
+ String path = getlenya12ContentPath(publication);
+ if (!new File(path).exists()) {
+ path = getlenya12ContentPath(getDefaultPub());
+ }
+ setParameter("path", path);
+ }
+
+ protected String getlenya12ContentPath(Publication publication) {
+ return publication.getDirectory().getAbsolutePath().replace(File.separatorChar, '/')
+ + "/lenya12-content";
+ }
+
+ protected Publication getDefaultPub() {
+ Publication defaultPub;
+ try {
+ defaultPub = getDocumentFactory().getPublication("default");
+ } catch (PublicationException e) {
+ throw new RuntimeException(e);
+ }
+ return defaultPub;
+ }
+
+ protected void doCheckPreconditions() throws Exception {
+ super.doCheckPreconditions();
+ Area area = getArea();
+ if (area.getDocuments().length > 0) {
+ addErrorMessage("You can't import anything because this publication already contains content.");
+ }
+ }
+
+ protected Area getArea() {
+ String url = getSourceURL();
+ URLInformation info = new URLInformation(url);
+ String pubId = info.getPublicationId();
+ String areaName = info.getArea();
+ Area area;
+ try {
+ area = getDocumentFactory().getPublication(pubId).getArea(areaName);
+ } catch (PublicationException e) {
+ throw new RuntimeException(e);
+ }
+ return area;
+ }
+
+ protected void doCheckExecutionConditions() throws Exception {
+ super.doCheckExecutionConditions();
+ String path = getParameterAsString("path");
+ String baseUri = "file://" + path;
+ String sitetreeUri = baseUri + File.separator + getArea().getName() + "/sitetree.xml";
+ if (!SourceUtil.exists(sitetreeUri, this.manager)) {
+ addErrorMessage("The sitetree file does not exist in this directory.");
+ }
+ }
+
+ protected void doExecute() throws Exception {
+ super.doExecute();
+ String path = getParameterAsString("path");
+ path = path.concat(File.separator + getArea().getName());
+ ContentImporter importer = new ContentImporter(this.manager, getLogger());
+ importer.importContent(getDefaultPub(), getArea(),path);
+ }
+
+}
Added: lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml (added)
+++ lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml Tue Jan 22 07:36:23 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->
+
+<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+ <message key="import-from-lenya12">Import from lenya 1.2</message>
+ <message key="may-take-a-while">This may take a couple of seconds.</message>
+
+</catalogue>
Added: lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml (added)
+++ lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml Tue Jan 22 07:36:23 2008
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->
+
+<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+ <message key="getting-started">Erste Schritte</message>
+ <message key="thanks">Vielen Dank, dass Sie sich Apache Lenya näher anschauen!</message>
+ <message key="import-from-lenya12">Inhalt aus lenya 1.2 importieren</message>
+ <message key="may-take-a-while">Dies kann einige Sekunden dauern.</message>
+
+</catalogue>
Added: lenya/sandbox/modules/importfrom12/usecases/importcontent.jx
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/usecases/importcontent.jx?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/usecases/importcontent.jx (added)
+++ lenya/sandbox/modules/importfrom12/usecases/importcontent.jx Tue Jan 22 07:36:23 2008
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id: forms.jx 416646 2006-06-23 09:02:03Z andreas $ -->
+<page:page
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
+ xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+ xmlns:ci="http://apache.org/cocoon/include/1.0"
+ >
+
+ <page:title><i18n:text>Import</i18n:text></page:title>
+ <page:body>
+
+ <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
+
+ <jx:choose>
+ <jx:when test="${! usecase.hasErrors()}">
+ <p><i18n:text>thanks</i18n:text></p>
+ <p>In order to import content from lenya-1.2 you have to copy the
+ lenya 1.2 content folder to the publication you would like to import
+ tha content and rename it to lenya12-content</p>
+ <form name="import" method="post">
+ <p>
+ <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
+ <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
+ <input type="submit" name="submit" value="import-from-lenya12" i18n:attr="value"/>
+ <i18n:text>may-take-a-while</i18n:text>
+ </p>
+ </form>
+ <form name="create" method="get">
+ <p>
+ <input type="hidden" name="lenya.usecase" value="sitemanagement.create"/>
+ <input type="hidden" name="path" value="/index"/>
+ <input type="submit" name="submit" value="create-own-page" i18n:attr="value"/>
+ </p>
+ </form>
+ </jx:when>
+ <jx:otherwise>
+ <p>
+ <form method="post">
+ <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
+ <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
+ <input type="submit" value="Cancel" i18n:attr="value"/>
+ </form>
+ </p>
+ </jx:otherwise>
+ </jx:choose>
+
+ </page:body>
+</page:page>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org