Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/17/11 22:51:11 (13 years ago)
Author:
abeham
Message:

#1541

  • updated to latest trunk version
Location:
branches/QAPAlgorithms
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/QAPAlgorithms

  • branches/QAPAlgorithms/HeuristicLab.Persistence

  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs

    r5445 r6569  
    4242
    4343    private static ConfigurationService instance;
     44    private static object locker = new object();
    4445    private readonly Dictionary<IFormat, Configuration> customConfigurations;
    4546
     
    6566    public static ConfigurationService Instance {
    6667      get {
    67         if (instance == null)
    68           instance = new ConfigurationService();
    69         return instance;
     68        lock (locker) {
     69          if (instance == null)
     70            instance = new ConfigurationService();
     71          return instance;
     72        }
    7073      }
    7174    }
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Core/Serializer.cs

    r5445 r6569  
    246246            compositeSerializer.CreateMetaInfo(value),
    247247            emitTypeInfo);
    248         throw CreatePersistenceException(type, "Could not determine how to serialize a value.");
     248        throw CreatePersistenceException(type, "Could not determine how to serialize a value.", true);
    249249      }
    250250      catch (Exception x) {
     
    255255          throw;
    256256        } else {
    257           throw CreatePersistenceException(type, "Uncaught exception during serialization: " + x.Message);
     257          throw CreatePersistenceException(
     258            type,
     259            string.Format("Uncaught exception during serialization:{0}{1}", Environment.NewLine, x),
     260            false);
    258261        }
    259262      }
     
    261264        objectGraphTrace.Pop();
    262265      }
    263     }
    264 
    265     private PersistenceException CreatePersistenceException(Type type, string message) {
     266    }   
     267
     268    private PersistenceException CreatePersistenceException(Type type, string message, bool appendConfig) {
    266269      StringBuilder sb = new StringBuilder();
    267270      sb.Append(message)
     
    270273        .AppendLine("\"")
    271274        .Append("object graph location: ")
    272         .AppendLine(string.Join(".", objectGraphTrace.ToArray()))
    273         .AppendLine("No registered primitive serializer for this type:");
    274       foreach (var ps in configuration.PrimitiveSerializers)
    275         sb.Append(ps.SourceType.VersionInvariantName())
    276           .Append(" ---- (")
    277           .Append(ps.GetType().VersionInvariantName())
    278           .AppendLine(")");
    279       sb.AppendLine("Rejected by all composite serializers:");
    280       foreach (var cs in configuration.CompositeSerializers)
    281         sb.Append("\"")
    282           .Append(cs.JustifyRejection(type))
    283           .Append("\" ---- (")
    284           .Append(cs.GetType().VersionInvariantName())
    285           .AppendLine(")");
     275        .AppendLine(string.Join(".", objectGraphTrace.ToArray()));
     276      if (appendConfig) {
     277        sb.AppendLine("No registered primitive serializer for this type:");
     278        foreach (var ps in configuration.PrimitiveSerializers)
     279          sb.Append(ps.SourceType.VersionInvariantName())
     280            .Append(" ---- (")
     281            .Append(ps.GetType().VersionInvariantName())
     282            .AppendLine(")");
     283        sb.AppendLine("Rejected by all composite serializers:");
     284        foreach (var cs in configuration.CompositeSerializers)
     285          sb.Append("\"")
     286            .Append(cs.JustifyRejection(type))
     287            .Append("\" ---- (")
     288            .Append(cs.GetType().VersionInvariantName())
     289            .AppendLine(")");
     290      }
    286291      return new PersistenceException(sb.ToString());
    287292    }
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs

    r5445 r6569  
    4646
    4747    private static readonly Dictionary<Type, Type> interfaceCache = new Dictionary<Type, Type>();
     48    private static readonly object locker = new object();
    4849
    4950    public Type GetGenericEnumerableInterface(Type type) {
    50       if (interfaceCache.ContainsKey(type))
    51         return interfaceCache[type];
    52       foreach (Type iface in type.GetInterfaces()) {
    53         if (iface.IsGenericType &&
    54           iface.GetGenericTypeDefinition() == typeof(IEnumerable<>) &&
    55           numberConverter.CanSerialize(iface.GetGenericArguments()[0])) {
    56           interfaceCache.Add(type, iface);
    57           return iface;
     51      lock (locker) {
     52        if (interfaceCache.ContainsKey(type))
     53          return interfaceCache[type];
     54        foreach (Type iface in type.GetInterfaces()) {
     55          if (iface.IsGenericType &&
     56            iface.GetGenericTypeDefinition() == typeof(IEnumerable<>) &&
     57            numberConverter.CanSerialize(iface.GetGenericArguments()[0])) {
     58            interfaceCache.Add(type, iface);
     59            return iface;
     60          }
    5861        }
     62        interfaceCache.Add(type, null);
    5963      }
    60       interfaceCache.Add(type, null);
    6164      return null;
    6265    }
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs

    r5445 r6569  
    124124    /// <param name="storableMemberInfos"></param>
    125125    /// <returns></returns>
    126     private static IEnumerable<StorableMemberInfo> DisentangleNameMapping(
    127         IEnumerable<StorableMemberInfo> storableMemberInfos) {
     126    private static IEnumerable<StorableMemberInfo> DisentangleNameMapping(IEnumerable<StorableMemberInfo> storableMemberInfos) {
    128127      var nameGrouping = new Dictionary<string, List<StorableMemberInfo>>();
    129128      foreach (StorableMemberInfo storable in storableMemberInfos) {
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/System.Drawing/Bitmap2XmlSerializer.cs

    r5445 r6569  
    2828  internal sealed class Bitmap2XmlSerializer : PrimitiveXmlSerializerBase<Bitmap> {
    2929
    30     public override XmlString Format(Bitmap o) {
     30    public override XmlString Format(Bitmap o) {     
    3131      MemoryStream stream = new MemoryStream();
    32       o.Save(stream, ImageFormat.Png);
     32      lock (o)
     33        o.Save(stream, ImageFormat.Png);
    3334      byte[] array = stream.ToArray();
    3435      Byte1DArray2XmlSerializer serializer = new Byte1DArray2XmlSerializer();
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/HeuristicLabPersistencePlugin.cs.frame

    r6099 r6569  
    2727  /// The plugin for HeuriticLab.Persistence
    2828  /// </summary>
    29   [Plugin("HeuristicLab.Persistence", "3.3.4.$WCREV$")]
     29  [Plugin("HeuristicLab.Persistence", "3.3.5.$WCREV$")]
    3030  [PluginFile("HeuristicLab.Persistence-3.3.dll", PluginFileType.Assembly)]
    3131  [PluginDependency("HeuristicLab.Tracing", "3.3")]
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Properties/AssemblyInfo.frame

    r6099 r6569  
    5252//
    5353[assembly: AssemblyVersion("3.3.0.0")]
    54 [assembly: AssemblyFileVersion("3.3.4.$WCREV$")]
     54[assembly: AssemblyFileVersion("3.3.5.$WCREV$")]
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj

    r4065 r6569  
    107107  </ItemGroup>
    108108  <ItemGroup>
     109    <ProjectReference Include="..\..\..\HeuristicLab.Algorithms.GeneticAlgorithm\3.3\HeuristicLab.Algorithms.GeneticAlgorithm-3.3.csproj">
     110      <Project>{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}</Project>
     111      <Name>HeuristicLab.Algorithms.GeneticAlgorithm-3.3</Name>
     112    </ProjectReference>
    109113    <ProjectReference Include="..\HeuristicLab.Persistence-3.3.csproj">
    110114      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Tests/Properties/AssemblyInfo.cs

    r5446 r6569  
    5353// by using the '*' as shown below:
    5454[assembly: AssemblyVersion("3.3.0.0")]
    55 [assembly: AssemblyFileVersion("3.3.3.0")]
     55[assembly: AssemblyFileVersion("3.3.5.0")]
  • branches/QAPAlgorithms/HeuristicLab.Persistence/3.3/Tests/UseCases.cs

    r6342 r6569  
    3939using HeuristicLab.Persistence.Interfaces;
    4040using Microsoft.VisualStudio.TestTools.UnitTesting;
     41using System.Threading.Tasks;
     42using HeuristicLab.Algorithms.GeneticAlgorithm;
    4143
    4244namespace HeuristicLab.Persistence_33.Tests {
     
    12711273    }
    12721274
    1273 
     1275    [TestMethod]
     1276    public void ConcurrencyTest() {
     1277      int n = 20;
     1278      Task[] tasks = new Task[n];
     1279      for (int i = 0; i < n; i++) {
     1280        tasks[i] = Task.Factory.StartNew((idx) => {
     1281          byte[] data;
     1282          using(var stream = new MemoryStream()) {
     1283            XmlGenerator.Serialize(new GeneticAlgorithm(), stream);
     1284            data = stream.ToArray();
     1285          }
     1286        }, i);
     1287      }
     1288      Task.WaitAll(tasks);
     1289    }
     1290
     1291    [TestMethod]
     1292    public void ConcurrentBitmapTest() {
     1293      Bitmap b = new Bitmap(300, 300);
     1294      Random r = new Random();
     1295      for (int x = 0; x<b.Height; x++) {
     1296        for (int y = 0; y<b.Width; y++) {
     1297          b.SetPixel(x, y, Color.FromArgb(r.Next()));
     1298        }
     1299      }
     1300      Task[] tasks = new Task[20];
     1301      byte[][] datas = new byte[tasks.Length][];
     1302      for (int i = 0; i<tasks.Length; i++) {
     1303        tasks[i] = Task.Factory.StartNew((idx) => {
     1304          using (var stream = new MemoryStream()) {
     1305            XmlGenerator.Serialize(b, stream);
     1306            datas[(int)idx] = stream.ToArray();
     1307          }
     1308        }, i);
     1309      }
     1310      Task.WaitAll(tasks);
     1311    }
    12741312
    12751313    [ClassInitialize]
Note: See TracChangeset for help on using the changeset viewer.