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 2004/09/13 09:46:27 UTC

svn commit: rev 45956 - incubator/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source

Author: andreas
Date: Mon Sep 13 00:46:26 2004
New Revision: 45956

Modified:
   incubator/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java
Log:
releasing source resolver, wrapping exception instead of message

Modified: incubator/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java
==============================================================================
--- incubator/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java	(original)
+++ incubator/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java	Mon Sep 13 00:46:26 2004
@@ -56,7 +56,6 @@
 
     private Context context;
     private ServiceManager manager;
-    private SourceResolver sourceResolver;
     private String delegationScheme;
     private String delegationPrefix;
 
@@ -89,39 +88,46 @@
     public Source getSource(final String location, final Map parameters)
             throws MalformedURLException, IOException, SourceException {
 
+        SourceResolver sourceResolver = null;
+
         try {
-            this.sourceResolver = (SourceResolver) manager
+            sourceResolver = (SourceResolver) manager
                     .lookup(org.apache.excalibur.source.SourceResolver.ROLE);
-        } catch (ServiceException e) {
-            throw new SourceException(e.getMessage());
-        }
 
-        String path = location.substring(SCHEME.length());
+            String path = location.substring(SCHEME.length());
 
-        if (!path.startsWith("//")) {
+            if (!path.startsWith("//")) {
 
-            Map objectModel = ContextHelper.getObjectModel(this.context);
-            try {
-                PageEnvelopeFactory pageEnvelopeFactory = PageEnvelopeFactory.getInstance();
-
-                if (pageEnvelopeFactory != null) {
-                    PageEnvelope pageEnvelope = pageEnvelopeFactory.getPageEnvelope(objectModel);
-
-                    if (pageEnvelope != null) {
-                        String publicationID = pageEnvelope.getPublication().getId();
-                        String area = pageEnvelope.getDocument().getArea();
-                        path = "/" + publicationID + "/" + Publication.CONTENT_PATH + "/" + area
-                                + path;
+                Map objectModel = ContextHelper.getObjectModel(this.context);
+                try {
+                    PageEnvelopeFactory pageEnvelopeFactory = PageEnvelopeFactory.getInstance();
+
+                    if (pageEnvelopeFactory != null) {
+                        PageEnvelope pageEnvelope = pageEnvelopeFactory
+                                .getPageEnvelope(objectModel);
+
+                        if (pageEnvelope != null) {
+                            String publicationID = pageEnvelope.getPublication().getId();
+                            String area = pageEnvelope.getDocument().getArea();
+                            path = "/" + publicationID + "/" + Publication.CONTENT_PATH + "/"
+                                    + area + path;
+                        }
                     }
+                } catch (PageEnvelopeException e) {
+                    throw new SourceException(
+                            "Cannot attach publication-id and/or area to " + path, e);
                 }
-            } catch (PageEnvelopeException e) {
-                throw new SourceException("Cannot attach publication-id and/or area to " + path, e);
             }
-        }
 
-        path = this.delegationScheme + this.delegationPrefix + path;
+            path = this.delegationScheme + this.delegationPrefix + path;
 
-        return sourceResolver.resolveURI(path);
+            return sourceResolver.resolveURI(path);
+            
+        } catch (ServiceException e) {
+            throw new SourceException(e.getMessage(), e);
+        } finally {
+            this.manager.release(sourceResolver);
+        }
     }
 
     /**

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