Hi, Besides that probably not working at all, here my €0.02 to your idea:
* Bundle.getBundleLocation() returns an URL string and not a File. * I would assume that your clients should know what they do when creating relative files - creating files realtive to the path set in the "user.dir" system property. * If your clients want to write files in their private bundle area they should use the BundleContext.getDataFile(String) method. Regards Felix Baptiste Gaillard schrieb: > The main problem is that we do not have control on the OSGI components > deployed on our application because they are developped by our customers. > > We can write a guide and explain what to do and not to do with OSGI, but we > hoped to solve the majority of problems otherwise. > > What I wanted to do with: > new File("relative_path") > > is to change the way relative paths are built by replacing java.io.File() > with our version of java.io.File(). > > Something like : > > /** > * Our version of java.io.File > */ > class File { > > public File(String relativePath) > { > this.path = > fs.normalize(StaticBundleAccessor.getBundle().getBundleLocation().getAbsolutePath() > + '/' + relativePath); > this.prefixLength = fs.prefixLength(this.path); > } > > } > > /** > * SUN version of java.io.File > */ > class File { > > > > public File(String pathname) > > { > > this.path = fs.normalize(pathname); > > this.prefixLength = fs.prefixLength(this.path); > > } > > > > } > > Do you think something like that is feasible ? > > > > >> Date: Fri, 2 Oct 2009 10:51:21 +0200 >> Subject: Re: OSGI bootdelegation and java.io.File ? >> From: karlpa...@gmail.com >> To: users@felix.apache.org >> >> On Fri, Oct 2, 2009 at 10:48 AM, Baptiste Gaillard >> <b_gaill...@hotmail.com> wrote: >>> Hi, we are building a platform which allow to deploy and execute OSGI >>> components. >>> >>> Those OSGI components are developed by our customers and we do not have >>> control one those components. >>> The application is a JEE one and is deployed inside JBoss AS, we also use >>> an embedded Felix container. >>> >>> We have encounter problems when OSGI components do things like that in >>> their code: >>> >>> File file = new File("relative_path/myfile.txt"); >>> >>> This return a file which point to %JBOSS_HOME%/relative_path/myfile.txt. >>> This seems perfectly normal because OSGI delegate Class Loading for >>> 'java.*' classes used to the parent Class Loader. >>> >>> So, how is it possible to have a path to the Bundle location (we use >>> unzipped bundles) instead of %JBOSS_HOME% by calling new >>> File("relative_path") ? >>> Is it possible to force OSGI to load delegate the Class Loading for >>> java.io.File classes ? >> No. That is not possible. However, I'm not sure I really understand >> what it is you are trying to do. Can you tell us more about that - >> maybe there is a different solution to your problem... >> >> regards, >> >> Karl >> >>> Thanks, >>> >>> >>> Baptiste >>> >>> >>> >>> >>> _________________________________________________________________ >>> Découvrez toutes les possibilités de communication avec vos proches >>> http://www.microsoft.com/windows/windowslive/default.aspx >> >> >> -- >> Karl Pauls >> karlpa...@gmail.com >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org >> For additional commands, e-mail: users-h...@felix.apache.org >> > > _________________________________________________________________ > Découvrez toutes les possibilités de communication avec vos proches > http://www.microsoft.com/windows/windowslive/default.aspx --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@felix.apache.org For additional commands, e-mail: users-h...@felix.apache.org