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 2005/03/16 14:57:17 UTC

svn commit: r157750 - lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java

Author: andreas
Date: Wed Mar 16 05:57:16 2005
New Revision: 157750

URL: http://svn.apache.org/viewcvs?view=rev&rev=157750
Log:
usecase resolver works now for non-publication URLs

Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java?view=diff&r1=157749&r2=157750
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java Wed Mar 16 05:57:16 2005
@@ -32,6 +32,7 @@
 import org.apache.excalibur.source.SourceUtil;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationFactory;
+import org.apache.lenya.cms.publication.URLInformation;
 
 /**
  * Usecase resolver implementation.
@@ -107,8 +108,13 @@
      * @param name The plain usecase name.
      * @return A string.
      */
-    protected String getPublicationUsecaseName(String webappUrl, String name) {
-        return getPublication(webappUrl).getId() + "/" + name;
+    protected String getPublicationUsecaseName(String webappUrl, final String name) {
+        String newName = null;
+        Publication publication = getPublication(webappUrl);
+        if (publication != null) {
+            newName = publication.getId() + "/" + name;
+        }
+        return newName;
     }
 
     private Context context;
@@ -137,13 +143,20 @@
 
         SourceResolver resolver = null;
         Source source = null;
-        Publication publication;
+        Publication publication = null;
         try {
             resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
             source = resolver.resolveURI("context://");
+            String contextPath = SourceUtil.getFile(source).getAbsolutePath();
+
+            URLInformation info = new URLInformation(webappUrl);
+            String publicationId = info.getPublicationId();
 
-            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
-            publication = factory.getPublication(webappUrl, SourceUtil.getFile(source));
+            if (publicationId != null
+                    && PublicationFactory.existsPublication(publicationId, contextPath)) {
+                PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+                publication = factory.getPublication(webappUrl, SourceUtil.getFile(source));
+            }
         } catch (Exception e) {
             throw new RuntimeException(e);
         } finally {
@@ -158,13 +171,12 @@
     }
 
     /**
-     * @see org.apache.lenya.cms.usecase.UsecaseResolver#resolve(java.lang.String,
-     *      java.lang.String)
+     * @see org.apache.lenya.cms.usecase.UsecaseResolver#resolve(java.lang.String, java.lang.String)
      */
     public Usecase resolve(String webappUrl, String name) throws ServiceException {
         Usecase usecase = null;
         String publicationUsecaseName = getPublicationUsecaseName(webappUrl, name);
-        if (this.selector.isSelectable(publicationUsecaseName)) {
+        if (publicationUsecaseName != null && this.selector.isSelectable(publicationUsecaseName)) {
             usecase = (Usecase) this.selector.select(publicationUsecaseName);
         } else {
             usecase = (Usecase) this.selector.select(name);
@@ -178,7 +190,8 @@
      *      java.lang.String)
      */
     public boolean isRegistered(String webappUrl, String name) throws ServiceException {
-        return this.selector.isSelectable(getPublicationUsecaseName(webappUrl, name))
+        String pubName = getPublicationUsecaseName(webappUrl, name);
+        return (pubName != null && this.selector.isSelectable(pubName))
                 || this.selector.isSelectable(name);
     }
 



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