aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2012-10-14 23:03:24 -0500
committerrogerk <devnull@localhost>2012-10-14 23:03:24 -0500
commitc9bce45a01cc8861ec7c88e84d947ed6ebc8f7d1 (patch)
tree67b0bed46bb50ec47a383fc355db4a73d568b482 /src
parent9f787cc64e47333ea717681c874843b44fee60e7 (diff)
downloadprotobuf-c9bce45a01cc8861ec7c88e84d947ed6ebc8f7d1.tar.gz
protobuf-c9bce45a01cc8861ec7c88e84d947ed6ebc8f7d1.tar.bz2
protobuf-c9bce45a01cc8861ec7c88e84d947ed6ebc8f7d1.zip
Portability Changes -
Removing uses of Enum to IConvertible from CodedIOStreams, Removed MessageStreamIterator.FromFile on non-client profiles, Removed use of Path.GetFileName, Removed uses of Converter<T1, T2> delegate, Removed Guid/DispId options from test protos
Diffstat (limited to 'src')
-rw-r--r--src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs4
-rw-r--r--src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs37
-rw-r--r--src/ProtocolBuffers.Test/DeprecatedMemberTest.cs2
-rw-r--r--src/ProtocolBuffers.Test/GeneratedBuilderTest.cs4
-rw-r--r--src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs13
-rw-r--r--src/ProtocolBuffers/CodedInputStream.cs4
-rw-r--r--src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs4
-rw-r--r--src/ProtocolBuffers/CodedOutputStream.cs4
-rw-r--r--src/ProtocolBuffers/Descriptors/FileDescriptor.cs4
-rw-r--r--src/ProtocolBuffers/ICodedInputStream.cs4
-rw-r--r--src/ProtocolBuffers/ICodedOutputStream.cs4
-rw-r--r--src/ProtocolBuffers/MessageStreamIterator.cs2
-rw-r--r--src/ProtocolBuffers/TextFormat.cs2
-rw-r--r--src/ProtocolBuffers/TextTokenizer.cs2
-rw-r--r--src/ProtocolBuffersLite.Test/TestProtos/UnitTestRpcInteropLite.cs2
15 files changed, 51 insertions, 41 deletions
diff --git a/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs b/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs
index b3679bab..270af64b 100644
--- a/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs
+++ b/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs
@@ -78,7 +78,7 @@ namespace Google.ProtocolBuffers.Serialization.Http
{
contentType = (contentType ?? String.Empty).Split(';')[0].Trim();
- Converter<Stream, ICodedInputStream> factory;
+ CodedInputBuilder factory;
if(!options.MimeInputTypesReadOnly.TryGetValue(contentType, out factory) || factory == null)
{
if(String.IsNullOrEmpty(options.DefaultContentType) ||
@@ -95,7 +95,7 @@ namespace Google.ProtocolBuffers.Serialization.Http
{
contentType = (contentType ?? String.Empty).Split(';')[0].Trim();
- Converter<Stream, ICodedOutputStream> factory;
+ CodedOutputBuilder factory;
if (!options.MimeOutputTypesReadOnly.TryGetValue(contentType, out factory) || factory == null)
{
if (String.IsNullOrEmpty(options.DefaultContentType) ||
diff --git a/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs b/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs
index 72d73717..1480e50a 100644
--- a/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs
+++ b/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs
@@ -6,6 +6,15 @@ using Google.ProtocolBuffers.Collections;
namespace Google.ProtocolBuffers.Serialization.Http
{
/// <summary>
+ /// A delegate used to specify a method that constructs an ICodedInputStream from a .NET Stream.
+ /// </summary>
+ public delegate ICodedInputStream CodedInputBuilder(Stream stream);
+ /// <summary>
+ /// A delegate used to specify a method that constructs an ICodedOutputStream from a .NET Stream.
+ /// </summary>
+ public delegate ICodedOutputStream CodedOutputBuilder(Stream stream);
+
+ /// <summary>
/// Defines control information for the various formatting used with HTTP services
/// </summary>
public class MessageFormatOptions
@@ -32,9 +41,9 @@ namespace Google.ProtocolBuffers.Serialization.Http
/// <summary>
/// Default mime-type handling for input
/// </summary>
- private static readonly IDictionary<string, Converter<Stream, ICodedInputStream>> MimeInputDefaults =
- new ReadOnlyDictionary<string, Converter<Stream, ICodedInputStream>>(
- new Dictionary<string, Converter<Stream, ICodedInputStream>>(StringComparer.OrdinalIgnoreCase)
+ private static readonly IDictionary<string, CodedInputBuilder> MimeInputDefaults =
+ new ReadOnlyDictionary<string, CodedInputBuilder>(
+ new Dictionary<string, CodedInputBuilder>(StringComparer.OrdinalIgnoreCase)
{
{"application/json", JsonFormatReader.CreateInstance},
{"application/x-json", JsonFormatReader.CreateInstance},
@@ -55,9 +64,9 @@ namespace Google.ProtocolBuffers.Serialization.Http
/// <summary>
/// Default mime-type handling for output
/// </summary>
- private static readonly IDictionary<string, Converter<Stream, ICodedOutputStream>> MimeOutputDefaults =
- new ReadOnlyDictionary<string, Converter<Stream, ICodedOutputStream>>(
- new Dictionary<string, Converter<Stream, ICodedOutputStream>>(StringComparer.OrdinalIgnoreCase)
+ private static readonly IDictionary<string, CodedOutputBuilder> MimeOutputDefaults =
+ new ReadOnlyDictionary<string, CodedOutputBuilder>(
+ new Dictionary<string, CodedOutputBuilder>(StringComparer.OrdinalIgnoreCase)
{
{"application/json", JsonFormatWriter.CreateInstance},
{"application/x-json", JsonFormatWriter.CreateInstance},
@@ -81,35 +90,35 @@ namespace Google.ProtocolBuffers.Serialization.Http
private string _xmlReaderRootElementName;
private string _xmlWriterRootElementName;
private ExtensionRegistry _extensionRegistry;
- private Dictionary<string, Converter<Stream, ICodedInputStream>> _mimeInputTypes;
- private Dictionary<string, Converter<Stream, ICodedOutputStream>> _mimeOutputTypes;
+ private Dictionary<string, CodedInputBuilder> _mimeInputTypes;
+ private Dictionary<string, CodedOutputBuilder> _mimeOutputTypes;
/// <summary> Provides access to modify the mime-type input stream construction </summary>
- public IDictionary<string, Converter<Stream, ICodedInputStream>> MimeInputTypes
+ public IDictionary<string, CodedInputBuilder> MimeInputTypes
{
get
{
return _mimeInputTypes ??
- (_mimeInputTypes = new Dictionary<string, Converter<Stream, ICodedInputStream>>(
+ (_mimeInputTypes = new Dictionary<string, CodedInputBuilder>(
MimeInputDefaults, StringComparer.OrdinalIgnoreCase));
}
}
/// <summary> Provides access to modify the mime-type input stream construction </summary>
- public IDictionary<string, Converter<Stream, ICodedOutputStream>> MimeOutputTypes
+ public IDictionary<string, CodedOutputBuilder> MimeOutputTypes
{
get
{
return _mimeOutputTypes ??
- (_mimeOutputTypes = new Dictionary<string, Converter<Stream, ICodedOutputStream>>(
+ (_mimeOutputTypes = new Dictionary<string, CodedOutputBuilder>(
MimeOutputDefaults, StringComparer.OrdinalIgnoreCase));
}
}
- internal IDictionary<string, Converter<Stream, ICodedInputStream>> MimeInputTypesReadOnly
+ internal IDictionary<string, CodedInputBuilder> MimeInputTypesReadOnly
{ get { return _mimeInputTypes ?? MimeInputDefaults; } }
- internal IDictionary<string, Converter<Stream, ICodedOutputStream>> MimeOutputTypesReadOnly
+ internal IDictionary<string, CodedOutputBuilder> MimeOutputTypesReadOnly
{ get { return _mimeOutputTypes ?? MimeOutputDefaults; } }
/// <summary>
diff --git a/src/ProtocolBuffers.Test/DeprecatedMemberTest.cs b/src/ProtocolBuffers.Test/DeprecatedMemberTest.cs
index 6035c405..0901f043 100644
--- a/src/ProtocolBuffers.Test/DeprecatedMemberTest.cs
+++ b/src/ProtocolBuffers.Test/DeprecatedMemberTest.cs
@@ -10,7 +10,7 @@ namespace Google.ProtocolBuffers
[TestClass]
public class DeprecatedMemberTest
{
- private static void AssertIsDeprecated(ICustomAttributeProvider member)
+ private static void AssertIsDeprecated(MemberInfo member)
{
Assert.IsNotNull(member);
Assert.IsTrue(member.IsDefined(typeof(ObsoleteAttribute), false), "Member not obsolete: " + member);
diff --git a/src/ProtocolBuffers.Test/GeneratedBuilderTest.cs b/src/ProtocolBuffers.Test/GeneratedBuilderTest.cs
index cd870054..1dcb1c21 100644
--- a/src/ProtocolBuffers.Test/GeneratedBuilderTest.cs
+++ b/src/ProtocolBuffers.Test/GeneratedBuilderTest.cs
@@ -54,7 +54,9 @@ namespace Google.ProtocolBuffers
b.AddRangeRepeatedForeignEnum(new OneTimeEnumerator<ForeignEnum>(ForeignEnum.FOREIGN_BAR));
}
- private static void AssertThrows<T>(System.Threading.ThreadStart method) where T : Exception
+ private delegate void TestMethod();
+
+ private static void AssertThrows<T>(TestMethod method) where T : Exception
{
try
{
diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs
index 8830b82d..ecffc6f8 100644
--- a/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs
+++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs
@@ -39,12 +39,11 @@ namespace Google.ProtocolBuffers.TestProtos {
"dHMYASADKAsyGi5TZWFyY2hSZXNwb25zZS5SZXN1bHRJdGVtGicKClJlc3Vs" +
"dEl0ZW0SCwoDdXJsGAEgAigJEgwKBG5hbWUYAiABKAkiUgoTUmVmaW5lU2Vh" +
"cmNoUmVxdWVzdBIQCghDcml0ZXJpYRgBIAMoCRIpChBwcmV2aW91c19yZXN1" +
- "bHRzGAIgAigLMg8uU2VhcmNoUmVzcG9uc2UypQEKDVNlYXJjaFNlcnZpY2US" +
- "MAoGU2VhcmNoEg4uU2VhcmNoUmVxdWVzdBoPLlNlYXJjaFJlc3BvbnNlIgXC" +
- "PgIIBRI1CgxSZWZpbmVTZWFyY2gSFC5SZWZpbmVTZWFyY2hSZXF1ZXN0Gg8u" +
- "U2VhcmNoUmVzcG9uc2UaK8I+KAome0E2NUYwOTI1LUZEMTEtNGY5NC1CMTY2" +
- "LTg5QUM0RjAyNzIwNX1CP0gBwj46CiFHb29nbGUuUHJvdG9jb2xCdWZmZXJz" +
- "LlRlc3RQcm90b3MSElVuaXRUZXN0UnBjSW50ZXJvcIgOAw==");
+ "bHRzGAIgAigLMg8uU2VhcmNoUmVzcG9uc2UycQoNU2VhcmNoU2VydmljZRIp" +
+ "CgZTZWFyY2gSDi5TZWFyY2hSZXF1ZXN0Gg8uU2VhcmNoUmVzcG9uc2USNQoM" +
+ "UmVmaW5lU2VhcmNoEhQuUmVmaW5lU2VhcmNoUmVxdWVzdBoPLlNlYXJjaFJl" +
+ "c3BvbnNlQj9IAcI+OgohR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJv" +
+ "dG9zEhJVbml0VGVzdFJwY0ludGVyb3CIDgM=");
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
descriptor = root;
internal__static_SearchRequest__Descriptor = Descriptor.MessageTypes[0];
@@ -1352,9 +1351,7 @@ namespace Google.ProtocolBuffers.TestProtos {
#endregion
#region Services
- [global::System.Runtime.InteropServices.GuidAttribute("a65f0925-fd11-4f94-b166-89ac4f027205")]
public partial interface ISearchService {
- [global::System.Runtime.InteropServices.DispId(5)]
global::Google.ProtocolBuffers.TestProtos.SearchResponse Search(global::Google.ProtocolBuffers.TestProtos.SearchRequest searchRequest);
global::Google.ProtocolBuffers.TestProtos.SearchResponse RefineSearch(global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest refineSearchRequest);
}
diff --git a/src/ProtocolBuffers/CodedInputStream.cs b/src/ProtocolBuffers/CodedInputStream.cs
index e4d690b5..ab18f9d7 100644
--- a/src/ProtocolBuffers/CodedInputStream.cs
+++ b/src/ProtocolBuffers/CodedInputStream.cs
@@ -449,7 +449,7 @@ namespace Google.ProtocolBuffers
/// </summary>
[CLSCompliant(false)]
public bool ReadEnum<T>(ref T value, out object unknown)
- where T : struct, IComparable, IFormattable, IConvertible
+ where T : struct, IComparable, IFormattable
{
int number = (int) ReadRawVarint32();
if (Enum.IsDefined(typeof(T), number))
@@ -882,7 +882,7 @@ namespace Google.ProtocolBuffers
[CLSCompliant(false)]
public void ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list,
out ICollection<object> unknown)
- where T : struct, IComparable, IFormattable, IConvertible
+ where T : struct, IComparable, IFormattable
{
unknown = null;
object unkval;
diff --git a/src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs b/src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs
index 4f4e13d8..ca6662a4 100644
--- a/src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs
+++ b/src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs
@@ -575,7 +575,7 @@ namespace Google.ProtocolBuffers
case FieldType.Enum:
if (value is Enum)
{
- return ComputeEnumSize(fieldNumber, ((IConvertible)value).ToInt32(FrameworkPortability.InvariantCulture));
+ return ComputeEnumSize(fieldNumber, Convert.ToInt32(value));
}
else
{
@@ -631,7 +631,7 @@ namespace Google.ProtocolBuffers
case FieldType.Enum:
if (value is Enum)
{
- return ComputeEnumSizeNoTag(((IConvertible)value).ToInt32(FrameworkPortability.InvariantCulture));
+ return ComputeEnumSizeNoTag(Convert.ToInt32(value));
}
else
{
diff --git a/src/ProtocolBuffers/CodedOutputStream.cs b/src/ProtocolBuffers/CodedOutputStream.cs
index b6a501c4..b767f705 100644
--- a/src/ProtocolBuffers/CodedOutputStream.cs
+++ b/src/ProtocolBuffers/CodedOutputStream.cs
@@ -806,7 +806,7 @@ namespace Google.ProtocolBuffers
[CLSCompliant(false)]
public void WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
- where T : struct, IComparable, IFormattable, IConvertible
+ where T : struct, IComparable, IFormattable
{
if (list is ICastArray)
{
@@ -1028,7 +1028,7 @@ namespace Google.ProtocolBuffers
[CLSCompliant(false)]
public void WritePackedEnumArray<T>(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<T> list)
- where T : struct, IComparable, IFormattable, IConvertible
+ where T : struct, IComparable, IFormattable
{
WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
WriteRawVarint32((uint) calculatedSize);
diff --git a/src/ProtocolBuffers/Descriptors/FileDescriptor.cs b/src/ProtocolBuffers/Descriptors/FileDescriptor.cs
index 392db9a7..d7075e35 100644
--- a/src/ProtocolBuffers/Descriptors/FileDescriptor.cs
+++ b/src/ProtocolBuffers/Descriptors/FileDescriptor.cs
@@ -90,12 +90,14 @@ namespace Google.ProtocolBuffers.Descriptors
csharpFileOptions = BuildOrFakeWithDefaultOptions(options);
}
+ static readonly char[] PathSeperators = new char[] { '/', '\\' };
private CSharpFileOptions BuildOrFakeWithDefaultOptions(CSharpFileOptions defaultOptions)
{
// Fix for being able to relocate these files to any directory structure
if (proto.Package == "google.protobuf")
{
- string filename = Path.GetFileName(proto.Name);
+ int ixslash = proto.Name.LastIndexOfAny(PathSeperators);
+ string filename = ixslash < 0 ? proto.Name : proto.Name.Substring(ixslash + 1);
// TODO(jonskeet): Check if we could use FileDescriptorProto.Descriptor.Name - interesting bootstrap issues)
if (filename == "descriptor.proto")
{
diff --git a/src/ProtocolBuffers/ICodedInputStream.cs b/src/ProtocolBuffers/ICodedInputStream.cs
index a3c0f30b..b39b602d 100644
--- a/src/ProtocolBuffers/ICodedInputStream.cs
+++ b/src/ProtocolBuffers/ICodedInputStream.cs
@@ -171,7 +171,7 @@ namespace Google.ProtocolBuffers
/// </summary>
[CLSCompliant(false)]
bool ReadEnum<T>(ref T value, out object unknown)
- where T : struct, IComparable, IFormattable, IConvertible;
+ where T : struct, IComparable, IFormattable;
/// <summary>
/// Reads an sfixed32 field value from the stream.
@@ -214,7 +214,7 @@ namespace Google.ProtocolBuffers
/// </summary>
[CLSCompliant(false)]
void ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list, out ICollection<object> unknown)
- where T : struct, IComparable, IFormattable, IConvertible;
+ where T : struct, IComparable, IFormattable;
/// <summary>
/// Reads a set of messages using the <paramref name="messageType"/> as a template. T is not guaranteed to be
diff --git a/src/ProtocolBuffers/ICodedOutputStream.cs b/src/ProtocolBuffers/ICodedOutputStream.cs
index 8619508a..64c80653 100644
--- a/src/ProtocolBuffers/ICodedOutputStream.cs
+++ b/src/ProtocolBuffers/ICodedOutputStream.cs
@@ -292,7 +292,7 @@ namespace Google.ProtocolBuffers
/// </summary>
[CLSCompliant(false)]
void WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
- where T : struct, IComparable, IFormattable, IConvertible;
+ where T : struct, IComparable, IFormattable;
/// <summary>
/// Writes a packed repeated primitive, including tag and length, to the stream.
@@ -369,6 +369,6 @@ namespace Google.ProtocolBuffers
/// </summary>
[CLSCompliant(false)]
void WritePackedEnumArray<T>(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<T> list)
- where T : struct, IComparable, IFormattable, IConvertible;
+ where T : struct, IComparable, IFormattable;
}
} \ No newline at end of file
diff --git a/src/ProtocolBuffers/MessageStreamIterator.cs b/src/ProtocolBuffers/MessageStreamIterator.cs
index 89fda91f..32d697ca 100644
--- a/src/ProtocolBuffers/MessageStreamIterator.cs
+++ b/src/ProtocolBuffers/MessageStreamIterator.cs
@@ -124,10 +124,12 @@ namespace Google.ProtocolBuffers
return new MessageStreamIterator<TMessage>(streamProvider, extensionRegistry, newSizeLimit);
}
+#if CLIENTPROFILE
public static MessageStreamIterator<TMessage> FromFile(string file)
{
return new MessageStreamIterator<TMessage>(() => File.OpenRead(file), ExtensionRegistry.Empty);
}
+#endif
public static MessageStreamIterator<TMessage> FromStreamProvider(StreamProvider streamProvider)
{
diff --git a/src/ProtocolBuffers/TextFormat.cs b/src/ProtocolBuffers/TextFormat.cs
index c0f4a5f6..7e2eff04 100644
--- a/src/ProtocolBuffers/TextFormat.cs
+++ b/src/ProtocolBuffers/TextFormat.cs
@@ -708,7 +708,7 @@ namespace Google.ProtocolBuffers
{
// Explicitly specify the invariant culture so that this code does not break when
// executing in Turkey.
- String lowerName = name.ToLower(FrameworkPortability.InvariantCulture);
+ String lowerName = name.ToLowerInvariant();
field = type.FindDescriptor<FieldDescriptor>(lowerName);
// If the case-insensitive match worked but the field is NOT a group,
// TODO(jonskeet): What? Java comment ends here!
diff --git a/src/ProtocolBuffers/TextTokenizer.cs b/src/ProtocolBuffers/TextTokenizer.cs
index 90774bc2..5bb27fd0 100644
--- a/src/ProtocolBuffers/TextTokenizer.cs
+++ b/src/ProtocolBuffers/TextTokenizer.cs
@@ -338,7 +338,7 @@ namespace Google.ProtocolBuffers
NextToken();
return negative ? double.NegativeInfinity : double.PositiveInfinity;
}
- if (currentToken.Equals("nan", StringComparison.InvariantCultureIgnoreCase))
+ if (currentToken.Equals("nan", StringComparison.OrdinalIgnoreCase))
{
NextToken();
return Double.NaN;
diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestRpcInteropLite.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestRpcInteropLite.cs
index 85f562b4..1a54e8e2 100644
--- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestRpcInteropLite.cs
+++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestRpcInteropLite.cs
@@ -1280,9 +1280,7 @@ namespace Google.ProtocolBuffers.TestProtos {
#endregion
#region Services
- [global::System.Runtime.InteropServices.GuidAttribute("a65f0925-fd11-4f94-b166-89ac4f027205")]
public partial interface ISearchService {
- [global::System.Runtime.InteropServices.DispId(5)]
global::Google.ProtocolBuffers.TestProtos.SearchResponse Search(global::Google.ProtocolBuffers.TestProtos.SearchRequest searchRequest);
global::Google.ProtocolBuffers.TestProtos.SearchResponse RefineSearch(global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest refineSearchRequest);
}