The first part of this is checked in.  Do people still want the ability to specify the 
config file with absolute URLs?

Jeff

> -----Original Message-----
> From: Schnitzer, Jeff
> Sent: Thursday, February 06, 2003 3:43 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [Mav-user] Specifying external maverick.xml
> 
> 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_KEY
> , "/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:mav-
> [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]

Reply via email to