You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2009/02/06 04:17:00 UTC

svn commit: r741384 [2/2] - in /lenya/trunk: org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/ org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/metadata/ org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms...

Modified: lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeRevision.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeRevision.java?rev=741384&r1=741383&r2=741384&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeRevision.java (original)
+++ lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeRevision.java Fri Feb  6 03:16:59 2009
@@ -21,7 +21,6 @@
 import java.util.Iterator;
 import java.util.Vector;
 
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.excalibur.source.Source;
@@ -40,20 +39,19 @@
 
     private SourceNode node;
     private int number;
-    private ServiceManager manager;
     private long time = -1;
     private String userId;
+    private SourceResolver sourceResolver;
 
     /**
      * @param node The node.
      * @param number The revision number.
-     * @param manager The service manager.
      * @param logger The logger.
      */
-    public SourceNodeRevision(SourceNode node, int number, ServiceManager manager, Log logger) {
+    public SourceNodeRevision(SourceNode node, int number, SourceResolver resolver, Log logger) {
         this.node = node;
         this.number = number;
-        this.manager = manager;
+        this.sourceResolver = resolver;
     }
 
     public long getTime() {
@@ -86,11 +84,9 @@
 
     public InputStream getInputStream() {
         Source source = null;
-        SourceResolver resolver = null;
         try {
             String sourceUri = getSourceURI();
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
+            source = getSourceResolver().resolveURI(sourceUri);
             if (source.exists()) {
                 return source.getInputStream();
             } else {
@@ -101,13 +97,6 @@
             throw e;
         } catch (Exception e) {
             throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
         }
     }
 
@@ -129,13 +118,13 @@
 
     protected SourceNodeMetaDataHandler getMetaDataHandler() {
         if (this.metaDataHandler == null) {
-            this.metaDataHandler = new SourceNodeMetaDataHandler(this.manager, getMetaSourceUri(), this);
+            this.metaDataHandler = new SourceNodeMetaDataHandler(getMetaSourceUri(), this, getSourceResolver());
         }
         return this.metaDataHandler;
     }
 
     protected String getMetaSourceUri() {
-        String realSourceUri = SourceWrapper.computeRealSourceUri(this.manager, this.node.getSession(), 
+        String realSourceUri = SourceWrapper.computeRealSourceUri(getSourceResolver(), this.node.getSession(), 
                 this.node.getSourceURI(), getLogger());
         return realSourceUri + ".meta." + getTime() + ".bak";
     }
@@ -146,7 +135,7 @@
 
     public boolean exists() throws RepositoryException {
         try {
-            return SourceUtil.exists(getSourceURI(), this.manager);
+            return SourceUtil.exists(getSourceURI(), getSourceResolver());
         } catch (Exception e) {
             throw new RepositoryException(e);
         }
@@ -154,7 +143,7 @@
 
     public long getContentLength() throws RepositoryException {
         try {
-            return SourceUtil.getContentLength(getSourceURI(), this.manager);
+            return SourceUtil.getContentLength(getSourceURI(), getSourceResolver());
         } catch (Exception e) {
             throw new RepositoryException(e);
         }
@@ -162,7 +151,7 @@
 
     public long getLastModified() throws RepositoryException {
         try {
-            return SourceUtil.getLastModified(getSourceURI(), this.manager);
+            return SourceUtil.getLastModified(getSourceURI(), getSourceResolver());
         } catch (Exception e) {
             throw new RepositoryException(e);
         }
@@ -170,7 +159,7 @@
 
     public String getMimeType() throws RepositoryException {
         try {
-            return SourceUtil.getMimeType(getSourceURI(), this.manager);
+            return SourceUtil.getMimeType(getSourceURI(), getSourceResolver());
         } catch (Exception e) {
             throw new RepositoryException(e);
         }
@@ -181,4 +170,8 @@
         return this.userId;
     }
 
+    protected SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceWrapper.java?rev=741384&r1=741383&r2=741384&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceWrapper.java (original)
+++ lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceWrapper.java Fri Feb  6 03:16:59 2009
@@ -28,7 +28,7 @@
 import java.util.WeakHashMap;
 
 import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.excalibur.source.ModifiableSource;
@@ -36,7 +36,7 @@
 import org.apache.excalibur.source.TraversableSource;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.publication.DocumentFactoryBuilder;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.util.Assert;
 
@@ -47,16 +47,15 @@
 
     private SourceNode node;
     private String sourceUri;
-    protected ServiceManager manager;
+    private SourceResolver sourceResolver;
 
     /**
      * Ctor.
      * @param node
      * @param sourceUri
-     * @param manager
      * @param logger
      */
-    public SourceWrapper(SourceNode node, String sourceUri, ServiceManager manager, Log logger) {
+    public SourceWrapper(SourceNode node, String sourceUri, SourceResolver resolver, Log logger) {
 
         Assert.notNull("node", node);
         this.node = node;
@@ -64,9 +63,8 @@
         Assert.notNull("source URI", sourceUri);
         this.sourceUri = sourceUri;
 
-        Assert.notNull("service manager", manager);
-        this.manager = manager;
-
+        Assert.notNull("source resolver", resolver);
+        this.sourceResolver = resolver;
     }
 
     protected static final String FILE_PREFIX = "file:/";
@@ -85,14 +83,14 @@
      */
     protected String getRealSourceUri() {
         if (this.realSourceUri == null) {
-            this.realSourceUri = computeRealSourceUri(this.manager, getNode().getSession(),
+            this.realSourceUri = computeRealSourceUri(getSourceResolver(), getNode().getSession(),
                     this.sourceUri, getLogger());
         }
         return this.realSourceUri;
     }
 
-    protected static final String computeRealSourceUri(ServiceManager manager, Session session,
-            String sourceUri, Log logger) {
+    protected static final String computeRealSourceUri(SourceResolver sourceResolver,
+            Session session, String sourceUri, Log logger) {
         String contentDir = null;
         String publicationId = null;
         try {
@@ -100,7 +98,9 @@
             String publicationsPath = sourceUri.substring(pubBase.length());
             int firstSlashIndex = publicationsPath.indexOf("/");
             publicationId = publicationsPath.substring(0, firstSlashIndex);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(manager, session);
+            DocumentFactoryBuilder builder = (DocumentFactoryBuilder) WebAppContextUtils.getCurrentWebApplicationContext()
+                    .getBean(DocumentFactoryBuilder.class.getName());
+            DocumentFactory factory = builder.createDocumentFactory(session);
             Publication pub = factory.getPublication(publicationId);
             contentDir = pub.getContentDir();
         } catch (Exception e) {
@@ -130,7 +130,7 @@
 
         if (logger.isDebugEnabled()) {
             try {
-                if (!SourceUtil.exists(contentBaseUri, manager)) {
+                if (!SourceUtil.exists(contentBaseUri, sourceResolver)) {
                     logger.debug("The content directory [" + contentBaseUri + "] does not exist. "
                             + "It will be created as soon as documents are added.");
                 }
@@ -158,7 +158,7 @@
                         + "]: not checked out!");
             } else {
                 this.data = null;
-                SourceUtil.delete(getRealSourceUri(), this.manager);
+                SourceUtil.delete(getRealSourceUri(), getSourceResolver());
             }
         } catch (Exception e) {
             throw new RepositoryException(e);
@@ -192,7 +192,7 @@
             return true;
         } else {
             try {
-                return SourceUtil.exists(getRealSourceUri(), this.manager);
+                return SourceUtil.exists(getRealSourceUri(), getSourceResolver());
             } catch (Exception e) {
                 throw new RepositoryException(e);
             }
@@ -219,11 +219,9 @@
 
         ByteArrayOutputStream out = null;
         InputStream in = null;
-        SourceResolver resolver = null;
         TraversableSource source = null;
         try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (TraversableSource) resolver.resolveURI(getRealSourceUri());
+            source = (TraversableSource) getSourceResolver().resolveURI(getRealSourceUri());
 
             if (source.exists() && !source.isCollection()) {
                 byte[] buf = new byte[4096];
@@ -250,12 +248,8 @@
             } catch (Exception e) {
                 throw new RepositoryException(e);
             }
-
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
+            if (source != null) {
+                getSourceResolver().release(source);
             }
         }
         this.loadRevision = this.node.getCurrentRevisionNumber();
@@ -291,14 +285,12 @@
     }
 
     protected void saveTransactionable(String realSourceUri) throws RepositoryException {
-        SourceResolver resolver = null;
         ModifiableSource source = null;
         InputStream in = null;
         OutputStream out = null;
 
         try {
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (ModifiableSource) resolver.resolveURI(realSourceUri);
+            source = (ModifiableSource) getSourceResolver().resolveURI(realSourceUri);
 
             out = source.getOutputStream();
 
@@ -325,12 +317,8 @@
             } catch (Throwable t) {
                 throw new RuntimeException("Could not close streams: ", t);
             }
-
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
+            if (source != null) {
+                getSourceResolver().release(source);
             }
         }
     }
@@ -393,9 +381,13 @@
         loadData();
         return new NodeOutputStream();
     }
-    
+
     protected int getLoadRevision() {
         return this.loadRevision;
     }
 
+    protected SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
 }

Added: lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/resources/META-INF/cocoon/spring/lenya-module-sourcerepository-components.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/resources/META-INF/cocoon/spring/lenya-module-sourcerepository-components.xml?rev=741384&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/resources/META-INF/cocoon/spring/lenya-module-sourcerepository-components.xml (added)
+++ lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/resources/META-INF/cocoon/spring/lenya-module-sourcerepository-components.xml Fri Feb  6 03:16:59 2009
@@ -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.
+-->
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans
+  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
+  xmlns="http://www.springframework.org/schema/beans">
+  <bean name="org.apache.lenya.cms.repository.NodeFactory"
+    class="org.apache.lenya.cms.repository.SourceNodeFactory">
+    <property name="sourceResolver" ref="org.apache.excalibur.source.SourceResolver"/>
+  </bean>
+</beans>

Modified: lenya/trunk/org.apache.lenya.welcome/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.welcome/pom.xml?rev=741384&r1=741383&r2=741384&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.welcome/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.welcome/pom.xml Fri Feb  6 03:16:59 2009
@@ -100,5 +100,9 @@
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-usecase</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.lenya</groupId>
+      <artifactId>lenya-module-sourcerepository</artifactId>
+    </dependency>
   </dependencies>
 </project>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org