- From: Karen Cheng <karenkay@sholink.com>
- Date: Tue, 28 Jan 1997 08:10:35 -0800 (PST)
- To: abaird@www10.w3.org
- Cc: www-jigsaw@www10.w3.org
Hi Anselm,
Thanks for your reply.
> Karen Cheng writes:
> > Using getParent() within getSomeResource() means that this method
> > can't be made static, and so we'd have to create an instance of
> > MyResource before we can get the shared context resource, right?
>
> Correct,
>
> > I have a GlobalResource class which registers a number of global
> > attributes, and then I have the following ResourceManager class (which
> > is your MyResource class):
> >
> > public class ResourceManager extends HTTPResource {
> > static GlobalResource gr;
> >
> > public ResourceManager() {}
> >
> > public synchronized GlobalResource getGlobalResource() {
> > if (gr == null) {
> > // Get the container resource.
> > Resource parent = getParent();
> > // Lookup the global resource within that container.
> > gr = (GlobalResource) ((DirectoryResource) parent).lookup("globalResource\
> > ");
> > }
> > return gr;
> > }
> > }
> >
> > However, when I tried to use it in the constructor of one of my other
> > classes, I get a null pointer exception from getGlobalResource():
> >
> > public MyNewResource() {
> > ResourceManager rm = new ResourceManager();
> > GlobalResource gr = rm.getGlobalResource();
> >
> > String attr = gr.getAttr();
> > : : :
> > }
> >
> > Note that I've used Admin/Editor to create "globalResource" under the User
> > directory, which is where all my other resources were created.
> >
> > Could you please tell me what's wrong? Why didn't lookup() load the
> > global resource when it couldn't find it in the resource store?
>
> It should have, can you provide the stack trace for the
> NullPointerException ? I think either the globalResource doesn't
> exist, or it hasn't been initialized properly; the stack trace will
> help deteriming the precise cause of the problem.
The following is my GlobalResource class:
public class GlobalResource extends HTTPResource {
protected static int ATTR_SOMEATTR = -1;
static {
Attribute attr = null;
Class cls = null;
try {
cls = Class.forName("w3c.jigsaw.karen.GlobalResource");
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
}
// Register the attributes.
attr = new StringAttribute("Some Attribute", "Default",
Attribute.EDITABLE);
ATTR_SOMEATTR = AttributeRegistry.registerAttribute(cls, attr);
}
public String getAttr() {
return getString(ATTR_SOMEATTR, null);
}
}
And the stack trace:
java.lang.NullPointerException
at w3c.jigsaw.karen.ResourceManager.getGlobalResource(ResourceManager.ja
va:17)
at w3c.jigsaw.karen.HtmlPage.<init>(HtmlPage.java:17)
at w3c.jigsaw.karen.LoginPage.<init>(LoginPage.java:14)
at w3c.jigsaw.resources.AttributeHolder.unpickle(AttributeHolder.java)
at w3c.jigsaw.resources.ResourceIndex.loadResource(SimpleResourceStore.j
ava)
at w3c.jigsaw.resources.SimpleResourceStore.loadResource(SimpleResourceS
tore.java)
at w3c.jigsaw.resources.DirectoryResource.lookupStore(DirectoryResource.
java)
at w3c.jigsaw.resources.DirectoryResource.lookupStore(DirectoryResource.
java)
at w3c.jigsaw.resources.DirectoryResource.lookup(DirectoryResource.java)
at w3c.jigsaw.resources.DirectoryResource.lookup(DirectoryResource.java)
at w3c.jigsaw.resources.DirectoryResource.lookup(DirectoryResource.java)
at w3c.jigsaw.http.httpd.perform(httpd.java)
at w3c.jigsaw.http.Client.processRequest(Client.java)
at w3c.jigsaw.http.Client.loop(Client.java)
at w3c.jigsaw.http.Client.runConnection(Client.java)
at w3c.jigsaw.http.Client.run(Client.java)
at java.lang.Thread.run(Thread.java)
Thanks,
Karen
Received on Tuesday, 28 January 1997 11:11:04 UTC