John/Scott:

The patch below for o/a/j/page/impl/CastorXmlPageManager.java worked for me... it seems that page ids now require an extension so that they can be cached correctly in the FileCache with a real file name. I am not sure this is the CORRECT fix. It is certainly not the cleanest or most efficient possible... perhaps adding an additional name/alias lookup to the FileCache would be better?

I also had to escape the French LATIN-1 character embedded in the o/a/j/page/TestCastorXmlPageManager.java source file to make sure it functioned properly. I seem to recall somewhere that LATIN-1 characters must be escaped in string literals, (?).

Randy Watler

---------------------------------------------------------------------------------------------------------------------------------
--- CastorXmlPageManager.java.orig    2004-08-30 21:37:13.000000000 -0600
+++ CastorXmlPageManager.java    2004-08-30 20:44:43.000000000 -0600
@@ -194,7 +194,14 @@

        Page page = null;

-        page = (Page) pages.getDocument(id);
+        if (id.endsWith(this.ext))
+        {
+            page = (Page) pages.getDocument(id);
+        }
+        else
+        {
+            page = (Page) pages.getDocument(id + this.ext);
+        }

        if (page == null)
        {
@@ -206,7 +213,14 @@
                // watcher
                try
                {
-                    pages.put(id, page, this.rootDir);
+                    if (id.endsWith(this.ext))
+                    {
+                        pages.put(id, page, this.rootDir);
+                    }
+                    else
+                    {
+                        pages.put(id + this.ext, page, this.rootDir);
+                    }
                    int lastSlash = id.indexOf("/");
                    if (lastSlash > -1)
                    {
@@ -385,7 +399,16 @@
        }

        // marshal page to disk
-        File f = new File(this.rootDir, id + this.ext);
+
+        File f = null;
+        if (id.endsWith(this.ext))
+        {
+            f = new File(this.rootDir, id);
+        }
+        else
+        {
+            f = new File(this.rootDir, id + this.ext);
+        }
        FileWriter writer = null;

        try
@@ -437,7 +460,14 @@
        {
            try
            {
-                pages.put(id, page, this.rootDir);
+                if (id.endsWith(this.ext))
+                {
+                    pages.put(id, page, this.rootDir);
+                }
+                else
+                {
+                    pages.put(id + this.ext, page, this.rootDir);
+                }
            }
            catch (IOException e)
            {
@@ -467,11 +497,26 @@
            return;
        }

-        File file = new File(this.rootDir, id + this.ext);
+        File file = null;
+        if (id.endsWith(this.ext))
+        {
+            file = new File(this.rootDir, id);
+        }
+        else
+        {
+            file = new File(this.rootDir, id + this.ext);
+        }

        synchronized (pages)
        {
-            pages.remove(id);
+            if (id.endsWith(this.ext))
+            {
+                pages.remove(id);
+            }
+            else
+            {
+                pages.remove(id + this.ext);
+            }
        }

file.delete();
---------------------------------------------------------------------------------------------------------------------------------
--- TestCastorXmlPageManager.java.orig 2004-08-30 21:21:44.000000000 -0600
+++ TestCastorXmlPageManager.java 2004-08-30 21:22:26.000000000 -0600
@@ -346,7 +346,7 @@
Folder folder1French = pageManager.getFolder("folder1");
FolderMetaData metaData = folder1French.getMetaData();
assertNotNull(metaData);
- assertEquals("Titre français pour la chemise 1", metaData.getTitle(Locale.FRENCH));
+ assertEquals("Titre fran\347ais pour la chemise 1", metaData.getTitle(Locale.FRENCH));
Folder folder1English = pageManager.getFolder("folder1");
metaData = folder1English.getMetaData();
----------------------------------------------------------------------------------------------------------------------------------



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to