New to Mef so I m on a discovery tour.
I was wondering whether you could read from Configuration file like Unity does.
I mean configure an Interface and mapto a class and sort of resolve it.
Lets take an example "Plugins"
I could take the approach of creating a folder "Plugins" and MEF would happily read all the plugins.
What about if I wanted to define the classes/interfaces I want to use in a config file like unity.
Can this be done or Am I missing the point with mef?
Thanks a lot
MEF doesn't support this by default. I believe there is a configuration-based programming model on MefContrib that does this.
Related
I would like to add a data file or a configuration file along with my application (such as sample.conf). This file should be available to user so that he/she can edit the sample configuration to further customize the application.
How can I add such files to my project such that
This file becomes part of distributable, and
How can I link it in my source documentation, so that its purpose can be doucmented, and
This is file is goes into a special directory (such as conf)
Or is there any such predefined task available.
SBT Native Packager provides support for doing what you want, though you'll have to dig through the docs a bit. The universal packager is probably the best approach for you.
http://www.scala-sbt.org/sbt-native-packager/
I think what you're looking for is the typesafehub/config https://github.com/typesafehub/config project. It uses the HOCON format (Human Optimized Config Object Notation).
Considering that I am developing an end-user software program (as an uberjar) I am wondering what my options are to make it possible for the user to download a plugin and load that during runtime.
The plugin(s) should come compiled and without source code, so sth. like load is not an option.
What existing libraries (or ways of Java...?) exist to build this on?
EDIT: If you are not sure I would also be satisfied with a way that costs a reboot/-start of the main-program. However, what is important is that the source-code won't be included in any JAR file (neither main application nor plugin-jars, see :omit-source of Leiningen documentation).
To add a jar during runtime, use pomegranate which lets you add a .jar file to the classpath. Plugins of your software should be regular Clojure libs that follow certain conventions that you need to establish:
Make them provide (e. g. in an edn) a symbol to an object implementing a constructor/destructor mechanism such as the Lifecycle protocol in Stuart Sierras component library. In runtime, require and resolve that symbol, start the resulting object and hand it over to rest your programs plugin coordination facilities.
Provide a public API in your program that allows the plugins to interact with it in ways that you coordinate asynchronously e. g. with clojure.core.async (don't let one plugin block the entire program).
Make sure that the plugins have a coordinated way to expose their functionality to each other only if they desire so to enable a high degree of modularity among your plugins. Make sure that your plugin loader is capable of detecting dependencies among plugins and is capable of loading and unloading them in the right order.
I've not tried it myself, but you should in theory be able to get OSGi to work with Clojure.
There's a Clojure / OSGi integration library here:
https://github.com/aav/clojure.osgi
If I were to attempt to role my own solution, I would try using tools.namespace to load and unload plugins. I'm not entirely sure it will work, but it's certainly in the right direction. I think one key piece is that the plugin jars will have to be "installed" in a location that's already on the classpath.
Again, this is only the start of one possible solution. I haven't tried doing this.
I want to create a some custom filters for my eclipse project. I think this can be done extending a plugin.
For example .asm file should go to the ASM filter, .c files to the C filter, and so on.
All my input files are stored in the Source folder (on my computer).
But I need this filters only for a better file management, in the Package Explorer.
Please, if anybody have a starting point for this issue ... I will appreciate.
The sooner, the better :)
You might want to have a look at this:
Eclipse Common Navigator Framework
And read this tutorial to create a custom navigation:
Custom Navigator
(It's part 7, but in the beginning there is a lot of theory. just find your personal starting point)
I hope this is what you were looking for or that you can at least get something useful out of it...
I want to have extensions to my application written in IronPython. Part of those extensions will use decorators, and so I wish to include the decorator module in the package.
The issue is that the decorator depends on several modules existing in the IronPython distribution, and those modules depend on other modules and so on.
The easiest solution would be to include the entire Lib folder in the application, but that would increase the footprint by 500 files and 12 mb.
To avoid that I'm trying to zip the modules and load them from the zip file instead of directly from the filesystem, but I haven't found a straightforward way to do so.
I've spotted the importer mechanism for loading modules via a "path_hooks" global , which seems to give me access to something similar to the imp mechanism in Python, but I'm not sure of how to use it.
Is there a hook for the import mechanism in IronPython that I'm missing?
How should I go about implementing this?
What you want is zipimport support, which isn't implemented yet. If you'd like to help out with that I can put you in touch with the guy who's working on it.
Otherwise, it looks like you might just need to stub out the bits of inspect.py that decorator.py needs.
There are a lot of similar questions, but none for this specifically. I have a Netbeans project with a bunch of packages. Only one has Main. I'd like to be able to create a .jar from just one of the packages (and all the classes it contains, of course), which doesn't have main.
Is this feasible without having to put that package in another project or without having to screw around with build.xml? If the latter, any easy way or good rtfm links?
The point is i'm developing part of an application for college, each group member is developing a module of sorts. If each could provide their .jar the main project can just include jars and use them. I'm guessing all the mains in the jars wouldn't really hurt? But still...
You can use the project properties to customize your project's jar file content. This screenshot shows what it looks like for a Java Class Library project.