예제 #1
0
    def __init__(self,
                 content_models,
                 host='localhost',
                 port=61613,
                 user='',
                 passcode='',
                 fedora_url=''):
        '''
        Constructor
        '''
        self.conn = Connection([(host, port)], user, passcode)
        self.conn.set_listener('', self)
        self.conn.start()
        logging.info('Connecting to STOMP server %(host)s on port %(port)s.' %
                     {
                         'host': host,
                         'port': port
                     })
        self.transaction_id = None
        logging.info("Connecting to Fedora server at %(url)s" %
                     {'url': fedora_url})
        self.fc = fcrepo.connection.Connection(fedora_url,
                                               username=user,
                                               password=passcode)
        self.client = FedoraClient(self.fc)
        self.fedora_url = fedora_url
        self.username = user
        self.password = passcode

        # Create plugin manager
        self.manager = PluginManager(
            categories_filter={"FedoraMicroService": FedoraMicroService})
        plugin_path = os.path.dirname(__file__)
        self.manager.setPluginPlaces([plugin_path + "/plugins"])

        # Load plugins.
        self.manager.locatePlugins()
        self.manager.loadPlugins()
        self.contentModels = {}

        for plugin in self.manager.getPluginsOfCategory("FedoraMicroService"):
            # plugin.plugin_object is an instance of the plubin
            logging.info(
                "Loading plugin: %(name)s for content model %(cmodel)s." % {
                    'name': plugin.plugin_object.name,
                    'cmodel': plugin.plugin_object.content_model
                })
            plugin.plugin_object.config = config
            if type(plugin.plugin_object.content_model) == types.StringType:
                content_models = [plugin.plugin_object.content_model]
            else:
                content_models = plugin.plugin_object.content_model
            for content_model in content_models:
                if content_model in self.contentModels:
                    self.contentModels[content_model].append(
                        plugin.plugin_object)
                else:
                    self.contentModels[content_model] = [plugin.plugin_object]
예제 #2
0
    def __init__(self,
                 host='localhost',
                 port=61613,
                 user='',
                 passcode='',
                 fedora_url=''):
        self.conn = Connection([(host, port)], user, passcode)
        self.conn.set_listener('', self)
        self.conn.start()
        self.transaction_id = None
        self.fc = fcrepo.connection.Connection(fedora_url,
                                               username=user,
                                               password=passcode)
        self.client = FedoraClient(self.fc)

        self.fedora_url = fedora_url
        self.user = user
        self.password = passcode