]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionResources.java
Revert explicit security context propagation
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.osgi / src / main / java / org / argeo / slc / osgi / OsgiExecutionResources.java
index 7ef87fcde1186b6f167fd0d05a3b2137e9ce8fe1..cf9b2d51d6922e851466f251f9beeb77567c7196 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ *
+ * Licensed 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.argeo.slc.osgi;
 
 import java.io.File;
@@ -12,6 +28,7 @@ import org.springframework.core.io.Resource;
 import org.springframework.osgi.context.BundleContextAware;
 import org.springframework.osgi.io.OsgiBundleResource;
 
+/** Write access to resources in an OSGi context */
 public class OsgiExecutionResources extends FileExecutionResources implements
                BundleContextAware {
        private final static Log log = LogFactory
@@ -46,13 +63,19 @@ public class OsgiExecutionResources extends FileExecutionResources implements
                        // TODO: Equinox specific?
                        String relPath = location.substring("initial@reference:file:"
                                        .length());
-                       if (relPath.startsWith("../"))// relative to the framework jar
-                               relPath = relPath.substring("../".length());
-                       String framework = System.getProperty("osgi.framework").substring(
-                                       "file:".length());
-                       int sepIndex = framework.lastIndexOf(File.separatorChar);
-                       framework = framework.substring(0, sepIndex);
-                       base = framework + '/' + relPath;
+                       // if (relPath.startsWith("../"))// relative to the framework jar
+                       // relPath = relPath.substring("../".length());
+                       // String framework =
+                       // System.getProperty("osgi.framework").substring(
+                       // "file:".length());
+                       // log.debug(framework);
+                       String installArea = System.getProperty("osgi.install.area")
+                                       .substring("file:".length());
+                       // log.debug(installArea);
+                       base = installArea + '/' + relPath;
+                       // int sepIndex = framework.lastIndexOf(File.separatorChar);
+                       // framework = framework.substring(0, sepIndex);
+                       // base = framework + '/' + relPath;
                } else {
                        return null;
                }
@@ -64,7 +87,13 @@ public class OsgiExecutionResources extends FileExecutionResources implements
                        throw new SlcException("Cannot determine canonical path for "
                                        + path, e);
                }
-               if (log.isDebugEnabled())
+
+               if (!file.exists())
+                       throw new SlcException(file
+                                       + " was retrieved in bundle located at '" + location
+                                       + "' for resource " + resource + " but it does not exist");
+
+               if (log.isTraceEnabled())
                        log.debug("OSGi local resource: " + file + " from " + resource);
                return file;
        }