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 2007/08/27 17:09:07 UTC
svn commit: r570151 -
/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java
Author: andreas
Date: Mon Aug 27 08:09:07 2007
New Revision: 570151
URL: http://svn.apache.org/viewvc?rev=570151&view=rev
Log:
Replaced file handling in ResourceExistsAction with TraversableSource handling
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java?rev=570151&r1=570150&r2=570151&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java Mon Aug 27 08:09:07 2007
@@ -20,16 +20,16 @@
package org.apache.lenya.cms.cocoon.acting;
-import java.io.File;
-import java.net.URL;
+import java.util.Collections;
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.acting.ServiceableAction;
+import org.apache.cocoon.acting.AbstractAction;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.TraversableSource;
/**
@@ -46,41 +46,42 @@
* should be preferred to this component, as the semantics of a Selector better
* match the supplied functionality.
*/
-public class ResourceExistsAction extends ServiceableAction implements ThreadSafe {
+public class ResourceExistsAction extends AbstractAction implements ThreadSafe {
/**
* @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
*/
public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source,
Parameters parameters) throws Exception {
- String urlstring = parameters.getParameter("url", source);
- String typestring = parameters.getParameter("type", "resource");
+ String url = parameters.getParameter("url", source);
+ String type = parameters.getParameter("type", "resource");
Source src = null;
try {
- src = resolver.resolveURI(urlstring);
-
- File resource = new File(new URL(src.getURI()).getFile());
-
- if (typestring.equals("resource") && src.exists()) {
- getLogger().debug(".act(): Resource (file or directory) exists: " + src.getURI());
-
- return EMPTY_MAP;
- } else if (typestring.equals("file") && resource.isFile()) {
- getLogger().debug(".act(): File exists: " + resource);
-
- return EMPTY_MAP;
- } else if (typestring.equals("directory") && resource.isDirectory()) {
- getLogger().debug(".act(): Directory exists: " + resource);
-
- return EMPTY_MAP;
- } else {
- getLogger().debug(".act(): Resource " + resource + " as type \"" + typestring +
- "\" does not exist");
+ src = resolver.resolveURI(url);
+
+ if (src.exists()) {
+
+ boolean isCollection = false;
+ if (src instanceof TraversableSource) {
+ TraversableSource traversableSource = (TraversableSource) src;
+ isCollection = traversableSource.isCollection();
+ }
+
+ boolean exists = type.equals("resource")
+ || type.equals("file") && !isCollection
+ || type.equals("directory") && isCollection;
+
+ if (exists) {
+ getLogger().debug(type + " exists: " + src.getURI());
+ return Collections.EMPTY_MAP;
+ }
}
- } catch (Exception e) {
- getLogger().warn(".act(): Exception", e);
+ getLogger().debug(".act(): Resource " + source + " as type \"" + type +
+ "\" does not exist");
} finally {
- resolver.release(src);
+ if (src != null) {
+ resolver.release(src);
+ }
}
return null;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org