diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java index 620eccff4..bb24aa948 100644 --- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java +++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java @@ -21,33 +21,35 @@ package org.apache.struts2.osgi; -import java.io.IOException; -import java.net.URL; -import java.util.*; - -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; - +import com.opensymphony.xwork2.FileManager; import com.opensymphony.xwork2.ObjectFactory; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; -import com.opensymphony.xwork2.config.PackageProvider; import com.opensymphony.xwork2.config.entities.PackageConfig; import com.opensymphony.xwork2.config.impl.DefaultConfiguration; import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider; -import com.opensymphony.xwork2.util.location.Location; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.Map; /** * Package loader implementation that loads resources from a bundle */ public class BundlePackageLoader implements PackageLoader { + private static final Logger LOG = LoggerFactory.getLogger(BundlePackageLoader.class); - public List loadPackages(Bundle bundle, BundleContext bundleContext, ObjectFactory objectFactory, Map pkgConfigs) throws ConfigurationException { + public List loadPackages(Bundle bundle, BundleContext bundleContext, ObjectFactory objectFactory, + FileManager fileManager, Map pkgConfigs) throws ConfigurationException { Configuration config = new DefaultConfiguration("struts.xml"); BundleConfigurationProvider prov = new BundleConfigurationProvider("struts.xml", bundle, bundleContext); for (PackageConfig pkg : pkgConfigs.values()) { diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java index e3ad8b9ab..17c8ef50e 100644 --- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java +++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java @@ -22,6 +22,8 @@ package org.apache.struts2.osgi; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.FileManager; +import com.opensymphony.xwork2.FileManagerFactory; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; @@ -54,6 +56,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene private Configuration configuration; private ObjectFactory objectFactory; + private FileManager fileManager; private OsgiHost osgiHost; private BundleContext bundleContext; @@ -130,7 +133,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene //XML config PackageLoader loader = new BundlePackageLoader(); - for (PackageConfig pkg : loader.loadPackages(bundle, bundleContext, objectFactory, configuration.getPackageConfigs())) { + for (PackageConfig pkg : loader.loadPackages(bundle, bundleContext, objectFactory, fileManager, configuration.getPackageConfigs())) { configuration.addPackageConfig(pkg.getName(), pkg); bundleAccessor.addPackageFromBundle(bundle, pkg.getName()); } @@ -202,6 +205,10 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene this.servletContext = servletContext; } + public void setFileManagerFactory(FileManagerFactory fmFactory) { + this.fileManager = fmFactory.getFileManager(); + } + public void destroy() { try { osgiHost.destroy(); diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/PackageLoader.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/PackageLoader.java index e1d91b40f..eb3319780 100644 --- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/PackageLoader.java +++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/PackageLoader.java @@ -21,20 +21,22 @@ package org.apache.struts2.osgi; -import java.util.List; -import java.util.Map; - +import com.opensymphony.xwork2.FileManager; +import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.config.ConfigurationException; +import com.opensymphony.xwork2.config.entities.PackageConfig; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; -import com.opensymphony.xwork2.ObjectFactory; -import com.opensymphony.xwork2.config.ConfigurationException; -import com.opensymphony.xwork2.config.PackageProvider; -import com.opensymphony.xwork2.config.entities.PackageConfig; +import java.util.List; +import java.util.Map; /** * Implementations of this interface can load packages from a Bundle */ public interface PackageLoader { - List loadPackages(Bundle bundle, BundleContext bundleContext, ObjectFactory objectFactory, Map map) throws ConfigurationException; + + List loadPackages(Bundle bundle, BundleContext bundleContext, ObjectFactory objectFactory, FileManager fileManager, + Map map) throws ConfigurationException; + }