Example #1
0
        public override void Register(IEntityMetaData extension, Type entityType)
        {
            Object writeLock = GetWriteLock();

            lock (writeLock)
            {
                base.Register(extension, entityType);
                UpdateEntityMetaDataWithLifecycleExtensions(extension);
                Type technicalEntityType = technicalEntityTypes.GetExtension(entityType);
                if (technicalEntityType != null)
                {
                    base.Register(extension, technicalEntityType);
                }
            }
        }
Example #2
0
        public IServiceResult GetORIsForServiceRequest(IServiceDescription serviceDescription)
        {
            ICacheService cacheService = nameToCacheServiceMap.GetExtension(serviceDescription.ServiceName);

            if (cacheService == null)
            {
                throw new ArgumentException("No cache service registered for with name '" + serviceDescription.ServiceName + "'");
            }
            return(cacheService.GetORIsForServiceRequest(serviceDescription));
        }
Example #3
0
        public Object ReadObject(Type returnType, IReader reader)
        {
            String            elementName      = reader.GetElementName();
            INameBasedHandler nameBasedHandler = nameToElementHandlers.GetExtension(elementName);

            if (nameBasedHandler == null)
            {
                throw new ArgumentException("Could not read object: " + elementName);
            }
            return(nameBasedHandler.ReadObject(returnType, elementName, 0, reader));
        }
Example #4
0
 public Object GetService(String serviceName)
 {
     return(serviceNameToObjectMap.GetExtension(serviceName));
 }
Example #5
0
 public IValueObjectConfig GetExtension(Type key)
 {
     return(typeToValueObjectConfig.GetExtension(key));
 }
Example #6
0
        public void AfterStarted()
        {
            DirectoryInfo targetInfo = new DirectoryInfo(TargetDir);

            targetInfo.Create();

            Log.Info("Saving all generated images to '" + targetInfo.FullName + "'");

            String[] sources = SourceDir.Split(';');
            foreach (String source in sources)
            {
                Log.Info("Scanning for office files in '" + source + "'");
                DirectoryInfo di          = new DirectoryInfo(source);
                FileInfo[]    directories = di.GetFiles("*", SearchOption.AllDirectories);

                IdentityHashMap <IFileParser, List <FileInfo> > queuedFilesMap = new IdentityHashMap <IFileParser, List <FileInfo> >();

                foreach (FileInfo sourceFile in directories)
                {
                    if (sourceFile.Name.Contains('~') || !sourceFile.Exists)
                    {
                        continue;
                    }
                    String lowercaseExtensionName = sourceFile.Extension.ToLowerInvariant();
                    if (lowercaseExtensionName.StartsWith("."))
                    {
                        lowercaseExtensionName = lowercaseExtensionName.Substring(1);
                    }
                    IFileParser fileParser = fileParsers.GetExtension(lowercaseExtensionName);
                    if (fileParser == null)
                    {
                        Log.Debug("Skipping '" + sourceFile.FullName + "': no parser configured for '" + lowercaseExtensionName + "'");
                        continue;
                    }
                    List <FileInfo> queuedFiles = queuedFilesMap.Get(fileParser);
                    if (queuedFiles == null)
                    {
                        queuedFiles = new List <FileInfo>();
                        queuedFilesMap.Put(fileParser, queuedFiles);
                    }
                    queuedFiles.Add(sourceFile);
                }
                List <Thread>  threads = new List <Thread>();
                CountDownLatch latch   = new CountDownLatch(queuedFilesMap.Count);

                foreach (Entry <IFileParser, List <FileInfo> > entry in queuedFilesMap)
                {
                    IFileParser      fileParser  = entry.Key;
                    IList <FileInfo> sourceFiles = entry.Value;
                    Thread           thread      = new Thread(new ThreadStart(delegate()
                    {
                        ParseFiles(fileParser, sourceFiles, targetInfo, latch);
                    }));
                    thread.Name         = fileParser.GetType().Name;
                    thread.IsBackground = true;
                    threads.Add(thread);
                }
                foreach (Thread thread in threads)
                {
                    thread.Start();
                }
                latch.Await(TimeSpan.FromMinutes(5)); // throw exception after some minutes
            }
        }