Heh, yeah, that's what I thought :-)

I'll explicitly check for file:, http:, and ftp:.  Should have that
checked in tonight.

Jeff

> -----Original Message-----
> From: Dan Finkelstein [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, February 12, 2003 4:04 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [Mav-user] Specifying external maverick.xml
> 
> Thanks for the update, but I couldn't get the new code to work, maybe
> that's what you meant by not supporting the file stuff yet !  <grin>
> 
> I was trying to set enter something like:
> 
>          getServletContext().setAttribute(Dispatcher.KEY_CONFIG_FILE,
> "file:///whatever/maverick.xml");
> 
> I think that if you add a check for the string starting with
"file://",
> and
> then call new URL(filepath) instead of getResource(), it would be
> fine.  Make sense?
> 
> Best,
> Dan
> 
> (Hope you had fun skiing ... I'm going up next week!)
> 
> 
> At 03:42 PM 2/6/03 -0800, you wrote:
> >Actually I was thinking of the application attribute context.  A
servlet
> >initialized prior to the dispatcher could do something like this:
> >
>
>this.getServletContext().setAttribute(Maverick.CONFIG_FILE_APPLICATION_
KE
> Y,
> >"/WEB-INF/somethingelse.xml");
> >
> >Of course the value could be obtained from anywhere (jndi, database,
http
> >request, etc).  Sound good?
> >
> >
> >I'm confused about your confusion over the file:// issue :-)  Right
now
> >all config file paths are loaded from inside the WAR using
> >getResource().  You want to be able to load config files which are
> located
> >somewhere else in the filesystem, right?  Maverick needs some way of
> >determining whether to use getResource() or to create a URL and load
that
> >directly.  Some way of determining if the path is a fully-specified
URL
> >seems like the natural way.
> >
> >I'm leaving tonight for a ski trip so I'm not sure I'll be able to do
> >anything about it until Monday, but I'll get this into CVS soon.
> >
> >Jeff
> >
> >-----Original Message-----
> >From: Dan Finkelstein [mailto:[EMAIL PROTECTED]]
> >Sent: Wednesday, February 05, 2003 4:23 PM
> >To: [EMAIL PROTECTED]
> >Subject: RE: [Mav-user] Specifying external maverick.xml
> >
> >Hi Jeff,
> >
> >Correct -- those are the two goals of this exercise!
> >
> >To be clear, when you speak of app-context, you mean using JNDI to
pull
> >the property from the servlet.xml file, something like this:
> >
> >                 Context context = new InitialContext();
> >                 Context envContext = (Context)
> > context.lookup("java:comp/env");
> >                 maverickFile =
> (String)envContext.lookup("maverickFile");
> >
> >I suppose that would work.
> >
> >As far as the ':', Windows uses that in a drive specifier, so that
might
> >be avoided.  If I understand right, you're trying to let the user
specify
> >one of:
> >
> >         file:///home/whatever/mav.xml
> >         or
> >         /WEB-INF/mav.xml
> >
> >and have it work either way?  I think the user needn't enter the
> "file://"
> >part -- in fact, it is kind of confusing and would commonly be left
off
> by
> >mistake anyway.   I think you could just assume the property is a
file --
> >why would anyone enter a resource path from _outside_ the war file?
It
> >doesn't make sense, that's what the init parameter is for!!
> >
> >Regardless, what you're suggesting is reasonable and will certainly
> >address the two concerns.  Can you commit it in cvs?
> >
> >Thanks a lot,
> >Dan
> >
> >
> >At 03:17 PM 2/5/2003 -0800, you wrote:
> >
> >
> >There are two goals, right?
> >
> >
> >
> >1)       To let your webapp determine at runtime what config file to
use.
> >
> >2)       To be able to use a configuration file outside of the WAR.
> >
> >
> >
> >The use of a static is a little weirdhow about checking an app
context
> >variable instead?  Here is what I propose:
> >
> >
> >
> >If app-context parameter exists, use that
> >
> >If init parameter exists, use that
> >
> >Otherwise use maverick.xml
> >
> >
> >
> >In addition, the logic:
> >
> >
> >
> >If value contains a :in the first 8 characters, treat it as an
absolute
> URL.
> >
> >Otherwise treat it as something to look up using getResource().
> >
> >
> >
> >That seems to cover the two requirements.  Is there a better way to
> >identify absolute URLs than checking for a :?
> >
> >
> >
> >Jeff
> >
> >
> >
> >-----Original Message-----
> >From: Dan Finkelstein [mailto:[EMAIL PROTECTED]]
> >Sent: Tuesday, February 04, 2003 10:51 PM
> >To: [EMAIL PROTECTED]
> >Subject: Re: [Mav-user] Specifying external maverick.xml
> >
> >
> >
> >Jeff,
> >
> >Can you chime in on what you think of this change?  Does it seem
> >reasonable (enuf!) to add to the source or is there a better way of
> >incorporating this feature?
> >
> >Thanks,
> >Dan
> >
> >At 07:52 AM 1/26/03 -0800, you wrote:
> >
> >Howdy,
> >
> >Yourazlin, I think you and I are thinking the same way in terms of
> wanting
> >access to changing maverick.xml from outside the war/ear file.  An
init
> >parameter, that is specified is web.xml, doesn't apply to our
situations
> >since web.xml is inside the war file.
> >
> >My suggestion is that Maverick allow an application to override the
file
> >name in any way it chooses.  For example, in my application, this
would
> >allow me to put the file name in my application-specific properties
> >file.   What follows is my suggestion on how to enhance Maverick to
> handle
> >this:
> >
> >To Dispatcher.java, add:
> >
> >         private static String _overriddenMaverickXmlFile = null;
> >
> >         public static void setMaverickXmlFile(String name)
> >         {
> >                 _overriddenMaverickXmlFile = name;
> >         }
> >
> >Also, to Dispatcher.java, modify loadConfigDocument() so that first
part
> >looks like this:
> >
> >         /**
> >         * @return a loaded JDOM document containing the
configuration
> > information.
> >         */
> >         protected Document loadConfigDocument() throws
ConfigException
> >         {
> >                 try
> >                 {
> >                         java.net.URL configURL = null;
> >                         if(_overriddenMaverickXmlFile != null) {
> >                                 configURL = new URL("file://" +
> > _overriddenMaverickXmlFile);
> >
> >                         } else {
> >
> >                                 String configFile =
> > this.getInitParameter(INITPARAM_CONFIG_FILE);
> >                                 if (configFile == null)
> >                                         configFile =
> DEFAULT_CONFIG_FILE;
> >
> >                                 // Quick sanity check
> >                                 if (!configFile.startsWith("/"))
> >                                         configFile = "/" +
configFile;
> >                                 configURL =
> > this.getServletContext().getResource(configFile);
> >                         }
> >
> >                         log.info("Loading config from " +
> > configURL.toString());
> >
> >This small change allows an application, while initializing itself,
to
> >override the configuration file with exactly what it wants.  In
> Yurazlin's
> >case, his application can retrieve the file name from
> >servletCtx.getInitParameter("xslDir") and, in my application I can
> >retrieve it from my properties file.
> >
> >Thoughts?
> >Dan
> >
> >
> >
> >At 01:07 PM 1/25/03 +0300, you wrote:
> >
> >
> >Greetings,
> >
> >I patched XSLTransform.java in my project about a week ago so that it
> >could use xsl files outside the ear file. probably, loading of mav
config
> >file can be changed in a similar way. as far as i remember, there
were
> >problems with using "resURL = servletCtx.getResource(path);" when
path
> >starts from "file" in my environment. the patch works fine with
> >w2k/sun_jdk 1.4.1/jboss-3.0.3/tomcat-4.1.12, but i can't say anything
> >about other platforms.
> >
> >
> >it is effective in my project because my designers do not have to
rebuild
> >ear each time they change something in design. but, as 4 me, it's
hacky,
> >so i didn't post it here earlier. maybe u can suggest another, more
> >intelligent solution. can u?
> >
> >the refactored code  is below. i hope it's clear what it's about.
> >
> >hope this helps,
> >yurazlin.
>
>-----------------------------------------------------------------------
--
>
------------------------------------------------------------------------
--
> ----------
> >
> >107      protected Templates loadTemplate(String path, ServletContext
> >servletCtx) throws ConfigException
> >108      {
> >109          // Make sure we have leading /, 'cause it's needed.
> >110          if (!path.startsWith("/"))
> >111              path = "/" + path;
> >112
> >113          try
> >114          {
> >115              TransformerFactory tFactory =
> >TransformerFactory.newInstance();
> >116              if (this.uriResolver != null)
> >117                  tFactory.setURIResolver(this.uriResolver);
> >118              return
> >tFactory.newTemplates(getTemplateStreamSource(path, servletCtx));
> >119          }
> >120          catch (TransformerException ex)
> >121          {
> >122              log.fatal("Error loading template " + path + ":  " +
> >ex.toString());
> >123              throw new ConfigException(ex);
> >124          }
> >125          catch (IOException ex)
> >126          {
> >127              log.fatal("Eror loading template " + path + ":  " +
> >ex.toString());
> >128              throw new ConfigException(ex);
> >129          }
> >130      }
> >131      private StreamSource getTemplateStreamSource(String path,
> >ServletContext servletCtx)
> >132      throws IOException, ConfigException
> >133      {
> >134          URL resURL = null;
> >135          String xslDir = servletCtx.getInitParameter("xslDir");
> >136          if (xslDir!=null)
> >137          {
> >138              String fullPath = xslDir+path;
> >139              File f = new File(fullPath);
> >140              path = "file://"+fullPath;
> >141              if (f.exists())
> >142              {
> >143                  resURL = new URL(path);
> >144              }
> >145          }
> >146          else
> >147          {
> >148              resURL = servletCtx.getResource(path);
> >149          }
> >150
> >151          if (resURL == null)
> >152          {
> >153              log.fatal("Resource not found:  " + path);
> >154              throw new ConfigException("Resource not found:  " +
> path);
> >155          }
> >156          log.debug("Template url is:  " + resURL.toString());
> >157          return new StreamSource(resURL.openStream(),
> resURL.toString());
> >158      }
> >
>
>-----------------------------------------------------------------------
--
> ----------------------------------------------------
> >
> >----- Original Message -----
> >From: "Schnitzer, Jeff" <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>
> >To: <[EMAIL PROTECTED] <mailto:mav-
> [EMAIL PROTECTED]>>
> >Sent: Friday, January 24, 2003 11:48 PM
> >Subject: RE: [Mav-user] Specifying external maverick.xml
> >
> > > You can specify a url to the maverick config file as an init param
to
> > > the Dispatcher servlet (see
> > > http://mav.sourceforge.net/maverick-manual.html#N100CB
> > <http://mav.sourceforge.net/maverick-manual.html>). This url gets
> > > passed to ServletContext.getResource().
> > >
> > > I'm really not entirely certain what you can get away with - try
> putting
> > > <file://path/to/wherever.xml> in there.
> > >
> > > If that doesn't work, perhaps we should add code to fallback to
> > > Class.getResource() if ServletContext.getResource() fails? Dan, if
you
> > > want to test this out, Dispatcher.loadConfigDocument() is trivial
to
> > > modify. If you find something that works, I will be happy to
commit a
> > > patch.
> > >
> > > Jeff Schnitzer
> > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> > >
> > > > -----Original Message-----
> > > > From: Dan Finkelstein [mailto:[EMAIL PROTECTED]]
> > > > Sent: Thursday, January 23, 2003 7:33 PM
> > > > To: [EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>
> > > > Subject: [Mav-user] Specifying external maverick.xml
> > > >
> > > > Hi --
> > > >
> > > > I'm interested in being able to specify a maverick.xml file that
is
> > > > located
> > > > outside the war file. Right now, it is pulled from within the
war
> and
> > > I
> > > > want to specify a different one "on-the-fly" so to speak. For
> > > example, is
> > > > there a call that I could make, like
> > > > Maverick.iniitalize(maverick_xml_file)? Or another way to do
this?
> > > >
> > > > Thanks in advance,
> > > > Dan
> > > >
> > > >
> > > >
> > > >
> > > > -------------------------------------------------------
> > > > This SF.NET email is sponsored by:
> > > > SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2
See!
> > > > <http://www.vasoftware.com>
> > > > [INVALID FOOTER]
> > >
> > >
> > >
> > > -------------------------------------------------------
> > > This SF.NET email is sponsored by:
> > > SourceForge Enterprise Edition + IBM + LinuxWorld
> > <http://www.vasoftware.com>
> > > [INVALID FOOTER]
> > >
> >
> >
> >-------------------------------------------------------
> >This SF.NET email is sponsored by:
> >SourceForge Enterprise Edition + IBM + LinuxWorld omething 2 See!
> >http://www.vasoftware.com
> >[INVALID FOOTER]
> 
> 
> 
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> [INVALID FOOTER]



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
[INVALID FOOTER]

Reply via email to