示例#1
0
 public Mapper()
 {
   _assemblyRepository = new AssemblyRepository();
   _typeRepository = new TypeRepository(_assemblyRepository);
   _memberRepository = new MemberRepository(_typeRepository);
   _modelCreator = new ModelCreator(_typeRepository, _memberRepository);
 }
示例#2
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="assemblyRepository">Instancia do repositório de assemblies.</param>
 /// <param name="assemblyParts">Relação dos nomes dos assemblies que devem ser resolvidos.</param>
 public AssemblyPartsResolver(IAssemblyRepository assemblyRepository, IEnumerable <AssemblyPart> assemblyParts)
 {
     assemblyRepository.Require("assemblyRepository").NotNull();
     assemblyParts.Require("assemblyNames").NotNull();
     _assemblyRepository = assemblyRepository;
     _assemblyParts      = assemblyParts;
 }
        public async Task <Type> GenerateAsync(Type serviceType, GenerateOptions options)
        {
            AssemblyName asmName;

            if (_createOptions.AssemblyNameProvider == null)
            {
                asmName = CreateAssemblyName(serviceType);
            }
            else
            {
                asmName = _createOptions.AssemblyNameProvider.GetName(serviceType, options);
            }

            IAssemblyRepository asmRepo = _createOptions.AssemblyRepository;
            Stream asmContent           = asmRepo == null ? null : await asmRepo.GetAsync(asmName);

            Assembly asm;

            if (asmContent == null)
            {
                AssemblyBuilder asmBuilder = GenerateInternal(asmName, serviceType, options);
                using (MemoryStream dll = new MemoryStream())
                {
                    await asmBuilder.SaveAsync(dll, new SaveOptions());

                    if (asmRepo != null)
                    {
                        asmContent = await asmRepo.CreateAsync(asmName);

                        try
                        {
                            dll.Position = 0;
                            await dll.CopyToAsync(asmContent);
                        }
                        finally
                        {
                            asmRepo.DisposeStream(asmContent);
                        }
                    }
                    asm = Assembly.Load(dll.GetBuffer());
                }
            }
            else
            {
                try
                {
                    using (MemoryStream dll = new MemoryStream())
                    {
                        await asmContent.CopyToAsync(dll);

                        asm = Assembly.Load(dll.GetBuffer());
                    }
                }
                finally
                {
                    asmRepo.DisposeStream(asmContent);
                }
            }
            return(asm.GetType(_typeFullName));
        }
        public CachingAssemblyRepository(IAssemblyRepository repository, TimeSpan TTL, ILogger log)
        {
            this.repository = repository;
              this.TTL = TTL;
              this.log = log;

              this.purgeTimer = new System.Threading.Timer(OnPurge, null, 1000, 1000);
        }
        public CachingAssemblyRepository(IAssemblyRepository repository, TimeSpan TTL, ILogger log)
        {
            this.repository = repository;
            this.TTL        = TTL;
            this.log        = log;

            this.purgeTimer = new System.Threading.Timer(OnPurge, null, 1000, 1000);
        }
 public MockAssemblyRepository()
 {
     var container = new AssemblyContainer();
       container.Add(typeof(MockPlugin1).Assembly.Location);
       container.Add(typeof(PluginCreator).Assembly.Location);
       this.repos = container;
       this.Fetched = new Dictionary<string, byte[]>();
 }
示例#7
0
        public MockAssemblyRepository()
        {
            var container = new AssemblyContainer();

            container.Add(typeof(MockPlugin1).Assembly.Location);
            container.Add(typeof(PluginCreator).Assembly.Location);
            this.repos   = container;
            this.Fetched = new Dictionary <string, byte[]>();
        }
        protected override void establish_context()
        {
            assembly_resolver = dependency <IAssemblyRepository>();
            assembly_name     = "MbUnit.Framework.dll";
            args = new List <string> {
                assembly_name, "TestAttribute", "output.html"
            }.ToArray();

            sut = create_sut();
        }
示例#9
0
 public ProjectInfo(
     IAssemblyRepository assemblyRepository,
     IFilesRepository filesRepository,
     IMigrationsRepository migrationsRepository,
     ILog log)
 {
     _assemblyRepository   = assemblyRepository ?? new AssemblyRepository();
     _filesRepository      = filesRepository ?? new FilesRepository();
     _migrationsRepository = migrationsRepository ?? new MigrationsRepository();
     _log = log ?? new Log();
 }
示例#10
0
        public object Create(PluginDescriptor descriptor, IAssemblyRepository assemblies, IDictionary <string, object> settings)
        {
            if (descriptor == null)
            {
                throw new ArgumentNullException("descriptor");
            }

            if (assemblies == null)
            {
                throw new ArgumentNullException("assemblies");
            }

            try
            {
                ResolveEventHandler resolveHandler = new ResolveEventHandler((s, e) =>
                {
                    // Fetch assembly from repository and load it into the appdomain
                    byte[] assemblyBytes = assemblies.Fetch(e.Name);
                    if (assemblyBytes != null)
                    {
                        return(Assembly.Load(assemblyBytes));
                    }

                    // Unable to resolve this assembly
                    return(null);
                });

                AppDomain.CurrentDomain.AssemblyResolve += resolveHandler;
                object plugin = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(descriptor.QualifiedName.AssemblyFullName, descriptor.QualifiedName.TypeFullName);
                AppDomain.CurrentDomain.AssemblyResolve -= resolveHandler;

                ApplySettings(plugin, settings);

                this.log.Info(Resources.CreatedPlugin, plugin.GetType().FullName);

                return(plugin);
            }
            catch (PluginException ex)
            {
                this.log.Error(ex.Message);
                throw;
            }
            catch (Exception ex)
            {
                this.log.Error(ex.Message);
                throw new PluginException(ex.Message, ex);
            }
        }
 public AssemblyService(IAssemblyRepository assemblyRepository)
 {
     _assemRepo = assemblyRepository;
 }
示例#12
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="domain"></param>
 /// <param name="assemblyRepository"></param>
 public AssemblyLoader(AppDomain domain, IAssemblyRepository assemblyRepository)
 {
     assemblyRepository.Require("assemblyRepository").NotNull();
     _domain             = domain;
     _assemblyRepository = assemblyRepository;
 }
示例#13
0
 public Client(ILogger log, IPluginRepository pluginRepository, IAssemblyRepository assemblyRepository)
 {
     this.log = log;
     this.pluginRepository   = pluginRepository;
     this.assemblyRepository = assemblyRepository;
 }
 public ReportOptionsFactory(IAssemblyRepository assembly_resolver)
 {
     this.assembly_resolver = assembly_resolver;
 }
 public FetchAssemblyHandler(IAssemblyRepository assemblyRepository, ILogger log)
 {
     this.log = log;
     this.assemblyRepository = assemblyRepository;
 }
示例#16
0
 public TypeRepository(IAssemblyRepository assemblyRepository)
 {
   _assemblyRepository = assemblyRepository;
 }
示例#17
0
        public object Create(PluginDescriptor descriptor, IAssemblyRepository assemblies, IDictionary<string, object> settings)
        {
            if (descriptor == null)
            throw new ArgumentNullException("descriptor");

              if (assemblies == null)
            throw new ArgumentNullException("assemblies");

              try
              {
            ResolveEventHandler resolveHandler = new ResolveEventHandler((s, e) =>
              {
            // Fetch assembly from repository and load it into the appdomain
            byte[] assemblyBytes = assemblies.Fetch(e.Name);
            if (assemblyBytes != null)
              return Assembly.Load(assemblyBytes);

            // Unable to resolve this assembly
            return null;
              });

            AppDomain.CurrentDomain.AssemblyResolve += resolveHandler;
            object plugin = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(descriptor.QualifiedName.AssemblyFullName, descriptor.QualifiedName.TypeFullName);
            AppDomain.CurrentDomain.AssemblyResolve -= resolveHandler;

            ApplySettings(plugin, settings);

            this.log.Info(Resources.CreatedPlugin, plugin.GetType().FullName);

            return plugin;
              }
              catch (PluginException ex)
              {
            this.log.Error(ex.Message);
            throw;
              }
              catch (Exception ex)
              {
            this.log.Error(ex.Message);
            throw new PluginException(ex.Message, ex);
              }
        }
示例#18
0
 public Client(ILogger log, IPluginRepository pluginRepository, IAssemblyRepository assemblyRepository)
 {
     this.log = log;
       this.pluginRepository = pluginRepository;
       this.assemblyRepository = assemblyRepository;
 }
示例#19
0
 public CrashInformationCollector(IAssemblyRepository assemblyRepository, string version = null)
 {
     _assemblyRepository = assemblyRepository;
     _version            = version;
 }
示例#20
0
 public WcfService(IAssemblyRepository assemblyRepository, IPluginRepository pluginRepository, ILogger log)
 {
     this.assemblyRepository = assemblyRepository;
       this.pluginRepository = pluginRepository;
       this.log = log;
 }
 public ReportOptionsFactory(IAssemblyRepository assembly_resolver, IObservationSpecificationFactory observation_specification_factory)
 {
     this.assembly_resolver = assembly_resolver;
     this.observation_specification_factory = observation_specification_factory;
 }
示例#22
0
 public AssemblyManager()
 {
     this.irep = new AssemblyRepository();
 }
示例#23
0
 public WcfService(IAssemblyRepository assemblyRepository, IPluginRepository pluginRepository, ILogger log)
 {
     this.assemblyRepository = assemblyRepository;
     this.pluginRepository   = pluginRepository;
     this.log = log;
 }
 public CrashInformationCollector(IAssemblyRepository assemblyRepository, string version = null)
 {
     _assemblyRepository = assemblyRepository;
     _version = version;
 }