Point checkin that suppresses spurious Cycle exception.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3530 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-08-16 21:53:59 +00:00
parent 9aed179e4d
commit 19544c2574
4 changed files with 49 additions and 13 deletions

View File

@@ -20,6 +20,7 @@ package org.alfresco.repo.avm;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -147,7 +148,6 @@ public class AVMRemoteImpl implements AVMRemote, Runnable
{
// Do nothing.
}
/*
long now = System.currentTimeMillis();
List<String> toClose = new ArrayList<String>();
for (String handle : fInputLastAccessTimes.keySet())
@@ -201,7 +201,6 @@ public class AVMRemoteImpl implements AVMRemote, Runnable
fOutputLastAccessTimes.remove(handle);
fOutputBusy.remove(handle);
}
*/
}
}
@@ -265,18 +264,17 @@ public class AVMRemoteImpl implements AVMRemote, Runnable
fInputLastAccessTimes.put(handle, System.currentTimeMillis());
}
byte [] buff = new byte[count];
int off = 0;
try
{
int read;
while ((read = in.read(buff, off, count - off)) != -1 && read != 0)
int read = in.read(buff);
if (read == -1)
{
off += read;
read = 0;
}
if (off != count)
if (read != count)
{
byte [] newBuff = new byte[off];
for (int i = 0; i < off; i++)
byte [] newBuff = new byte[read];
for (int i = 0; i < read; i++)
{
newBuff[i] = buff[i];
}

View File

@@ -729,7 +729,7 @@ class AVMRepository
}
if (fLookupCount.get() > 50)
{
throw new AVMCycleException("Cycle in lookup.");
// throw new AVMCycleException("Cycle in lookup.");
}
String [] pathParts = SplitPath(path);
AVMStore store = getAVMStoreByName(pathParts[0]);
@@ -789,10 +789,18 @@ class AVMRepository
*/
public Lookup lookupDirectory(int version, String path)
{
fLookupCount.set(fLookupCount.get() + 1);
Integer count = fLookupCount.get();
if (count == null)
{
fLookupCount.set(1);
}
else
{
fLookupCount.set(count + 1);
}
if (fLookupCount.get() > 50)
{
throw new AVMCycleException("Cycle in lookup.");
// throw new AVMCycleException("Cycle in lookup.");
}
String [] pathParts = SplitPath(path);
AVMStore store = getAVMStoreByName(pathParts[0]);

View File

@@ -17,7 +17,6 @@
package org.alfresco.repo.avm;
import java.io.PrintStream;
import java.util.List;
import org.springframework.context.support.FileSystemXmlApplicationContext;
@@ -104,6 +103,34 @@ public class AVMTestRemote extends TestCase
}
}
/**
* Another test of reading.
*/
public void testRead()
{
try
{
// Create a file.
byte [] buff = new byte[64];
for (int i = 0; i < 64; i++)
{
buff[i] = (byte)i;
}
String outHandle = fAVMRemote.createFile("main:/", "foo.dat");
fAVMRemote.writeOutput(outHandle, buff, 64);
fAVMRemote.closeOutputHandle(outHandle);
// Read it back in.
String inHandle = fAVMRemote.getInputHandle(-1, "main:/foo.dat");
buff = fAVMRemote.readInput(inHandle, 64);
fAVMRemote.closeInputHandle(inHandle);
}
catch (Exception e)
{
e.printStackTrace(System.err);
fail();
}
}
/**
* Test a call that should throw an exception.
*/