I deleted the .cowstate.xml file and then everything seemed fine. But
again this morning I found the same exception. Is the .cowstate.xml
remains somewhere in the cache which Webslinger uses? I restarted the
server, to flush the cache, and everything again is fine.
Please help as there is no place I can find help on Webslinger other
than here.
Adam / Ean - Please share some light on the issue. Its kind of urgent.
Thanks,
Kaushik
On 10-Oct-2009, at 12:20 PM, Kaushik Chakraborty wrote:
Hi,
Its a content management application. I created some folders / files
and then deleted some files, all from the application and not from
the backend. It behaves properly most of the time but sometimes it
throws below exception.
[StandardWrapperValve.java:257:ERROR] Servlet.service() for servlet
WebslingerServlet threw exception
java.lang.NullPointerException
at
org.webslinger.commons.vfs.handlers.cow.COWStateXmlStorageHandler
$1.findIfExists(COWStateXmlStorageHandler.java:19)
at
org.webslinger.commons.vfs.handlers.cow.COWStateXmlStorageHandler
$1.findIfExists(COWStateXmlStorageHandler.java:16)
at org.webslinger.lang.ConcurrentCache.findIfExists
(ConcurrentCache.java:39)
at org.webslinger.lang.AbstractCache$ConcurrentDelegate.get
(AbstractCache.java:125)
at org.webslinger.lang.AbstractCache.get(AbstractCache.java:
287)
at org.webslinger.lang.ConcurrentCache.get
(ConcurrentCache.java:29)
at
org.webslinger.commons.vfs.handlers.cow.COWStateXmlStorageHandler.removeDeletedChildren
(COWStateXmlStorageHandler.j
ava:43)
at org.webslinger.commons.vfs.virtual.VirtualFileSystem
$VirtualResolution.getChildNames(VirtualFileSystem.java:542)
at
org.webslinger.commons.vfs.GenerationalFileObject.doListChildren
(GenerationalFileObject.java:51)
at
org.webslinger.commons.vfs.AbstractGenerifiedFileObject.resolveChildren
(AbstractGenerifiedFileObject.java:69)
at
org.webslinger.commons.vfs.AbstractGenerifiedFileObject.getChildren
(AbstractGenerifiedFileObject.java:54)
at
org.webslinger.commons.vfs.GenerationalFileObject.getChildren
(GenerationalFileObject.java:46)
at
org.webslinger.commons.vfs.flat.FlatFileObject.doListChildren
(FlatFileObject.java:103)
at
org.webslinger.commons.vfs.AbstractGenerifiedFileObject.resolveChildren
(AbstractGenerifiedFileObject.java:69)
at
org.webslinger.commons.vfs.AbstractGenerifiedFileObject.getChildren
(AbstractGenerifiedFileObject.java:54)
at org.webslinger.commons.vfs.virtual.VirtualFileSystem
$VirtualResolution.getChildNames(VirtualFileSystem.java:526)
at
org.webslinger.commons.vfs.GenerationalFileObject.doListChildren
(GenerationalFileObject.java:51)
I could see that the folder where files have been deleted contain
a .cowstate.xml which has following entry for each file deleted from
the application
<item deleted="true" name="<file name>"/>
I saw the code of the COWStateXmlStorageHandler constructor where a
new ConcurrentCache object has been created which contains the
method findIfExists(). Now from the method's name, I am assuming
that it is searching for the file ".cowstate.xml" using getFile()
method. But as I cannot debug it I am clueless that why the returned
File object is null and hence file.exists() is throwing the above
NullPointerException. Is it a OS issue that getFile() is failing?
The constructor code of COWStateXmlStorageHandler is here
public COWStateXmlStorageHandler() {
states = new ConcurrentCache<FileName, COWStateXml>
(COWStateXmlStorageHandler.class, "states", null,
ConcurrentCache.SOFT) {
protected COWStateXml findIfExists(FileName key) throws
Exception {
FileObject file = getFile(key);
return file.exists() ? new COWStateXml(file) : null;
}
protected COWStateXml createValue(FileName key) throws
Exception {
return new COWStateXml(getFile(key));
}
};
}
Please help as these errors are now coming frequently and is causing
much trouble.
Thanks,
Kaushik