| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 | 
							- /*=============================================================================
 
-   Library: CTK
 
-   Copyright (c) German Cancer Research Center,
 
-     Division of Medical and Biological Informatics
 
-   Licensed under the Apache License, Version 2.0 (the "License");
 
-   you may not use this file except in compliance with the License.
 
-   You may obtain a copy of the License at
 
-     http://www.apache.org/licenses/LICENSE-2.0
 
-   Unless required by applicable law or agreed to in writing, software
 
-   distributed under the License is distributed on an "AS IS" BASIS,
 
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-   See the License for the specific language governing permissions and
 
-   limitations under the License.
 
- =============================================================================*/
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- ctkEABlacklistingHandlerTasks(ctkPluginContext* context,
 
-                               ctkEABlackList<BlackList>* blackList,
 
-                               ctkEATopicHandlerFilters<TopicHandlerFilters>* topicHandlerFilters,
 
-                               ctkEAFilters<Filters>* filters)
 
-   : blackList(blackList), context(context),
 
-     topicHandlerFilters(topicHandlerFilters), filters(filters)
 
- {
 
-   checkNull(context, "Context");
 
-   checkNull(blackList, "BlackList");
 
-   checkNull(topicHandlerFilters, "TopicHandlerFilters");
 
-   checkNull(filters, "Filters");
 
- }
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- ~ctkEABlacklistingHandlerTasks()
 
- {
 
-   delete filters;
 
-   delete topicHandlerFilters;
 
-   delete blackList;
 
- }
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- QList<ctkEAHandlerTask<ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters> > >
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- createHandlerTasks(const ctkEvent& event)
 
- {
 
-   QList<ctkEAHandlerTask<Self> > result;
 
-   QList<ctkServiceReference> handlerRefs;
 
-   try
 
-   {
 
-     handlerRefs = context->getServiceReferences<ctkEventHandler>(
 
-           topicHandlerFilters->createFilterForTopic(event.getTopic()));
 
-   }
 
-   catch (const ctkInvalidArgumentException& e)
 
-   {
 
-     CTK_WARN_EXC(ctkEventAdminActivator::getLogService(), &e)
 
-         << "Invalid EVENT_TOPIC [" << event.getTopic() << "]";
 
-   }
 
-   for (int i = 0; i < handlerRefs.size(); ++i)
 
-   {
 
-     const ctkServiceReference& ref = handlerRefs.at(i);
 
-     if (!blackList->contains(ref)
 
-         //TODO security
 
-         //&& ref.getPlugin()->hasPermission(
 
-         //  PermissionsUtil.createSubscribePermission(event.getTopic()))
 
-         )
 
-     {
 
-       try
 
-       {
 
-         if (event.matches(filters->createFilter(
 
-                             ref.getProperty(ctkEventConstants::EVENT_FILTER).toString())))
 
-         {
 
-           result.push_back(ctkEAHandlerTask<Self>(ref, event, this));
 
-         }
 
-       }
 
-       catch (const ctkInvalidArgumentException& e)
 
-       {
 
-         CTK_WARN_SR_EXC(ctkEventAdminActivator::getLogService(), ref, &e)
 
-             << "Invalid EVENT_FILTER - Blacklisting ServiceReference ["
 
-             << ref << " | Plugin(" << ref.getPlugin() << ")]";
 
-         blackList->add(ref);
 
-       }
 
-     }
 
-   }
 
-   return result;
 
- }
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- void
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- blackListRef(const ctkServiceReference& handlerRef)
 
- {
 
-   blackList->add(handlerRef);
 
-   CTK_WARN(ctkEventAdminActivator::getLogService())
 
-       << "Blacklisting ServiceReference [" << handlerRef << " | Plugin("
 
-       << handlerRef.getPlugin() << ")] due to timeout!";
 
- }
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- ctkEventHandler*
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- getEventHandler(const ctkServiceReference& handlerRef)
 
- {
 
-   ctkEventHandler* result = (blackList->contains(handlerRef)) ? 0
 
-                                                              : context->getService<ctkEventHandler>(handlerRef);
 
-   return (result ? result : &nullEventHandler);
 
- }
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- void
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- ungetEventHandler(ctkEventHandler* handler,
 
-                        const ctkServiceReference& handlerRef)
 
- {
 
-   if(&nullEventHandler != handler)
 
-   {
 
-     // Is the handler not unregistered or blacklisted?
 
-     if(!blackList->contains(handlerRef) &&
 
-         (handlerRef.getPlugin()))
 
-     {
 
-       context->ungetService(handlerRef);
 
-     }
 
-   }
 
- }
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- void
 
- ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters>::
 
- checkNull(void* object, const QString& name)
 
- {
 
-   if(object == 0)
 
-   {
 
-     throw ctkInvalidArgumentException(qPrintable(name + " may not be null"));
 
-   }
 
- }
 
 
  |