public object BuildItem(PluginItemMetadata itemData, PluginRuntime plugin)
 {
     BuilderHelper.CheckParameter("Type", itemData);
     BuilderHelper.CheckParameter("Directory", itemData);
     return(new PluginResource(
                (PluginResourceType)Enum.Parse(typeof(PluginResourceType), itemData.Attributes["Type"]),
                plugin.Metadata.GetAbsolutePath(itemData.Attributes["Directory"])));
 }
        public object BuildItem(PluginItemMetadata itemData, PluginRuntime plugin)
        {
            BuilderHelper.CheckParameter("ServiceClassName", itemData);
            string serviceClassName = itemData.Attributes["ServiceClassName"];
            object serviceInstance  = plugin.InstantiatePluginObject(serviceClassName);

            if (serviceInstance == null)
            {
                ServiceRegistration.Get <ILogger>().Warn("ServiceBuilder: Could not instantiate service class '{0}' in plugin '{1}' (id: '{2}')",
                                                         serviceClassName, itemData.PluginRuntime.Metadata.Name, itemData.PluginRuntime.Metadata.PluginId);
                return(null);
            }
            string registrationClassAssembly;

            if (!itemData.Attributes.TryGetValue("RegistrationClassAssembly", out registrationClassAssembly))
            {
                registrationClassAssembly = null;
            }
            string registrationClassName;

            if (!itemData.Attributes.TryGetValue("RegistrationClassName", out registrationClassName))
            {
                registrationClassName = null;
            }
            Type registrationType;

            if (string.IsNullOrEmpty(registrationClassName))
            {
                registrationType = serviceInstance.GetType();
            }
            else
            {
                registrationType = string.IsNullOrEmpty(registrationClassAssembly) ? plugin.GetPluginType(registrationClassName) :
                                   Type.GetType(registrationClassName + ", " + registrationClassAssembly);
            }
            if (registrationType == null)
            {
                ServiceRegistration.Get <ILogger>().Warn("ServiceBuilder: Could not instantiate service registration type '{0}' (Assembly: '{1}') in plugin '{2}' (id: '{3}')",
                                                         registrationClassName, registrationClassAssembly, itemData.PluginRuntime.Metadata.Name, itemData.PluginRuntime.Metadata.PluginId);
                return(null);
            }
            return(new ServiceItem(registrationType, serviceInstance));
        }
 public object BuildItem(PluginItemMetadata itemData, PluginRuntime plugin)
 {
     BuilderHelper.CheckParameter("ClassName", itemData);
     return(plugin.InstantiatePluginObject(itemData.Attributes["ClassName"]));
 }