All,
The Guice SVN trunk is significantly improved since the Guice 2.0 release.
It incorporates support for JSR 330, it solves various OSGi issues, it has
a ton of bug fixes, and the extensions (AssistedInjection, Multibinder,
Servlet, etc..) are all improved. I propose that we release the next
version of Guice as 3.0, primarily because of the JSR 330 support. "2.1"
wouldn't quite capture that monumental achievement. (I actually kind of
want to name it Guice 3.30, to highlight JSR 330 support, ha!)
I'll be glad to do what's needed to get Guice ready for a release (add
proper @since tags, cleanup javadocs, wiki, etc..).
Please take some time to look through the changes below. I believe that
Guice SVN is ready as-is for a 3.0 release, but if you are all able to
glance at any open issues and point out major ones that can be solved, it
would be appreciated. It would be amazing if we were able to do this by
JavaOne.
There's been approximately 200 commits to SVN since 2.0, so listing all
bugfixes isn't possible, but below is a list of large/logical changes (in
order of reading the SVN commit history)...
- Added support for toConstructor bindings.
- Consider toInstance bindings 'eager singletons' for scoping SPI purposes.
- Many, many servlet extension fixes.
- Added Multimap support to the multibinder extension.
- Added ability to multibinder to permit duplicates.
- Added a scope checker utility.
- Updated AssistedInject to use FactoryModuleBuilder, actually faster
performance-wise than way old implementation.
- Added JSR 330 support.
- Properly handle overridden @Inject methods (both with & without subclass
annotating @Inject).
- Fix circularly dependent singletons so that two singletons aren't created
sometimes.
- Add with(instance) API for servlet bindings.
- Add ability to make @Inject methods as @Toolable, so they are called
during Stage.TOOL (for extensions).
- Add InjectorBuilder, and ability to forcibly disable JIT bindings and
circular proxies.
- Update Multibinder so dependencies can be retrieved in Stage.TOOL.
- Allow duplicate bindings to be silently ignored (instead of blowing up).
- Fix combination of Multibinder & Modules.override().
- Proper OSGi support.
- Fixed Provider methods that request a Logger so named loggers are used
instead of anonymous loggers.
- Fixed to remove residue JIT bindings left in the parent injector when
child injectors fail creating JIT bindings sometimes.
- Fixed multibinder to work properly when based on marker (parameterless)
annotations.
Below is a list of API changes for core guice (not extensions) currently in
trunk since the 2.0 release, found using the jdiff tool, excluding the
'internal' package:
com.google.inject -
added: InjectorBuilder class
deprecated: Guice.createInjector(Stage, Module{})
deprecated: Guice.createInjector(Stage, Iterable<Module>)
added: Injector.getAllBindings
added: Injector.getExistingBinding(Key<T>)
added: Injector.getScopeBindings()
added: Key.hasAttributes
added: Key.ofType(Type)
added: Key.ofType(TypeLiteral<T>)
added: Key.ofType(Class<T>)
added: Key.withoutAttributes()
modified: Provider [extends javax.inject.Provider]
added: Scopes.isSingleton(Binding<?>)
com.google.inject.binder -
added: LinkedBindingBuilder.toConstructor(Constructor<S>)
added: LinkedBindingBuilder.toConstructor(Constructor<S>, TypeLiteral<?
extends S>)
modified: LinkedBindingBuilder.toProvider(Key<Provider ? extends T>>)
[using javax.inject.Provider now]
modified: LinkedBindingBuilder.toProvider(TypeLiteral<Provider ? extends
T>>) [using javax.inject.Provider now]
modified: LinkedBindingBuilder.toProvider(Class<Provider ? extends T>>)
[using javax.inject.Provider now]
com.google.inject.tools
added: Toolable annotation
changed: DefaultElementVisitor.visit(InjectionRequest<?>) [added <?> to
parameter]
changed: ElementVisitor.visit(InjectionRequest<?>) [added <?> to
parameter]
added: InjectionPoint.forConstructor(Constructor<T>)
added: InjectionPoint.forConstructor(Constructor<T>, TypeLiteral<? extends
T>)
added: InjectionPoint.getDeclaringType()
added: InjectionPoint.isToolable()
changed: InjectionPoint.forStaticMethodsAndFields(TypeLiteral<?>) [added
<?> to parameter]
changed: ProviderKeyBinding.getProviderKey() [return type is now
Key<Provider? extends T>>, where Provider is now javax.inject.Provider]
com.google.inject.util
added: Jsr330 class
added: ScopeChecker class
Sam
--
You received this message because you are subscribed to the Google Groups
"google-guice-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice-dev?hl=en.