You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2013/08/14 14:56:20 UTC
svn commit: r1513857 - in /chemistry/dotcmis/trunk/DotCMIS/binding:
atompub/atompub.cs http.cs
Author: fmui
Date: Wed Aug 14 12:56:19 2013
New Revision: 1513857
URL: http://svn.apache.org/r1513857
Log:
CMIS-699: allow ranges >Int32
Modified:
chemistry/dotcmis/trunk/DotCMIS/binding/atompub/atompub.cs
chemistry/dotcmis/trunk/DotCMIS/binding/http.cs
Modified: chemistry/dotcmis/trunk/DotCMIS/binding/atompub/atompub.cs
URL: http://svn.apache.org/viewvc/chemistry/dotcmis/trunk/DotCMIS/binding/atompub/atompub.cs?rev=1513857&r1=1513856&r2=1513857&view=diff
==============================================================================
--- chemistry/dotcmis/trunk/DotCMIS/binding/atompub/atompub.cs (original)
+++ chemistry/dotcmis/trunk/DotCMIS/binding/atompub/atompub.cs Wed Aug 14 12:56:19 2013
@@ -1787,15 +1787,15 @@ namespace DotCMIS.Binding.AtomPub
url.AddParameter(AtomPubConstants.ParamStreamId, streamId);
// get the content
- if (offset != null && offset > Int32.MaxValue)
+ if (offset != null && offset > Int64.MaxValue)
{
- throw new CmisInvalidArgumentException("Offset >" + Int32.MaxValue.ToString());
+ throw new CmisInvalidArgumentException("Offset >" + Int64.MaxValue.ToString());
}
- if (length != null && length > Int32.MaxValue)
+ if (length != null && length > Int64.MaxValue)
{
- throw new CmisInvalidArgumentException("Length >" + Int32.MaxValue.ToString());
+ throw new CmisInvalidArgumentException("Length >" + Int64.MaxValue.ToString());
}
- HttpUtils.Response resp = HttpUtils.InvokeGET(url, Session, (int?)offset, (int?)length);
+ HttpUtils.Response resp = HttpUtils.InvokeGET(url, Session, offset, length);
// check response code
if (resp.StatusCode != HttpStatusCode.OK && resp.StatusCode != HttpStatusCode.PartialContent)
Modified: chemistry/dotcmis/trunk/DotCMIS/binding/http.cs
URL: http://svn.apache.org/viewvc/chemistry/dotcmis/trunk/DotCMIS/binding/http.cs?rev=1513857&r1=1513856&r2=1513857&view=diff
==============================================================================
--- chemistry/dotcmis/trunk/DotCMIS/binding/http.cs (original)
+++ chemistry/dotcmis/trunk/DotCMIS/binding/http.cs Wed Aug 14 12:56:19 2013
@@ -27,6 +27,7 @@ using System.Web;
using DotCMIS.Enums;
using DotCMIS.Exceptions;
using DotCMIS.Util;
+using System.Reflection;
namespace DotCMIS.Binding.Impl
{
@@ -39,7 +40,7 @@ namespace DotCMIS.Binding.Impl
return Invoke(url, "GET", null, null, session, null, null, null);
}
- public static Response InvokeGET(UrlBuilder url, BindingSession session, int? offset, int? length)
+ public static Response InvokeGET(UrlBuilder url, BindingSession session, long? offset, long? length)
{
return Invoke(url, "GET", null, null, session, offset, length, null);
}
@@ -60,7 +61,7 @@ namespace DotCMIS.Binding.Impl
}
private static Response Invoke(UrlBuilder url, String method, String contentType, Output writer, BindingSession session,
- int? offset, int? length, IDictionary<string, string> headers)
+ long? offset, long? length, IDictionary<string, string> headers)
{
try
{
@@ -114,11 +115,41 @@ namespace DotCMIS.Binding.Impl
// range
if (offset != null && length != null)
{
- conn.AddRange(offset ?? 0, offset + length - 1 ?? 0);
+ if (offset < Int32.MaxValue && offset + length - 1 < Int32.MaxValue)
+ {
+ conn.AddRange((int)offset, (int)offset + (int)length - 1);
+ }
+ else
+ {
+ try
+ {
+ MethodInfo mi = conn.GetType().GetMethod("AddRange", new Type[] { typeof(Int64), typeof(Int64) });
+ mi.Invoke(conn, new object[] { offset, offset + length - 1 });
+ }
+ catch (Exception e)
+ {
+ throw new CmisInvalidArgumentException("Offset or length too big!", e);
+ }
+ }
}
else if (offset != null)
{
- conn.AddRange(offset ?? 0);
+ if (offset < Int32.MaxValue)
+ {
+ conn.AddRange((int)offset);
+ }
+ else
+ {
+ try
+ {
+ MethodInfo mi = conn.GetType().GetMethod("AddRange", new Type[] { typeof(Int64) });
+ mi.Invoke(conn, new object[] { offset });
+ }
+ catch (Exception e)
+ {
+ throw new CmisInvalidArgumentException("Offset too big!", e);
+ }
+ }
}
// compression