Author: limpbizkit
Date: Mon Dec 1 22:16:53 2008
New Revision: 715
Removed:
trunk/latest-javadoc/
Modified:
trunk/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
trunk/guice.iml
trunk/guice.ipr
trunk/servlet/test/com/google/inject/servlet/ServletTest.java
trunk/test/com/google/inject/ScopesTest.java
Log:
Removed old Javadocs.
Modified:
trunk/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
==============================================================================
---
trunk/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
(original)
+++
trunk/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
Mon Dec 1 22:16:53 2008
@@ -68,8 +68,8 @@
* FactoryProvider.newFactory(PaymentFactory.class,
RealPayment.class));</code></pre>
*
* <p>Now you can [EMAIL PROTECTED] @[EMAIL PROTECTED] Inject} your factory
interface into
your
- * Guice-injected classes. When you invoke the create method on that
factory, the
- * [EMAIL PROTECTED] FactoryProvider} will instantiate the implementation
class using
+ * Guice-injected classes. When you invoke the create method on that
factory,
+ * the [EMAIL PROTECTED] FactoryProvider} will instantiate the implementation
class
using
* parameters from the injector and the factory method.
*
* <pre><code>public class PaymentAction {
@@ -80,10 +80,10 @@
* payment.apply();
* }
* }</code></pre>
- *
+ *
* @param <F> The factory interface
* @param <R> The concrete class to be created.
- *
+ *
* @author [EMAIL PROTECTED] (Jerome Mourits)
* @author [EMAIL PROTECTED] (Jesse Wilson)
*/
@@ -99,16 +99,15 @@
Class<X> factoryType, Class<Y> implementationType){
return new FactoryProvider<X, Y>(factoryType,implementationType);
}
-
+
private FactoryProvider(Class<F> factoryType, Class<R>
implementationType) {
this.factoryType = factoryType;
this.implementationType = implementationType;
this.factoryMethodToConstructor = createMethodMapping();
checkDeclaredExceptionsMatch();
}
-
+
@Inject
- @SuppressWarnings({"unchecked", "unused"})
void setInjectorAndCheckUnboundParametersAreInjectable(Injector
injector) {
this.injector = injector;
for (AssistedConstructor<?> c : factoryMethodToConstructor.values()) {
@@ -135,7 +134,7 @@
}
}
}
-
+
private boolean isConstructorExceptionCompatibleWithFactoryExeception(
Class<?> constructorException, Class<?>[] factoryExceptions) {
for (Class<?> factoryException : factoryExceptions) {
@@ -145,8 +144,7 @@
}
return false;
}
-
- @SuppressWarnings("unchecked")
+
private boolean paramCanBeInjected(Parameter parameter, Injector
injector) {
return parameter.isBound(injector);
}
@@ -155,7 +153,7 @@
private Map<Method, AssistedConstructor<?>> createMethodMapping() {
List<AssistedConstructor<?>> constructors = Lists.newArrayList();
- for (Constructor c : implementationType.getDeclaredConstructors()) {
+ for (Constructor<?> c : implementationType.getDeclaredConstructors()) {
if (c.getAnnotation(AssistedInject.class) != null) {
constructors.add(new AssistedConstructor(c));
}
@@ -197,7 +195,6 @@
return result;
}
- @SuppressWarnings({"unchecked"})
public F get() {
InvocationHandler invocationHandler = new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[]
creationArgs) throws Throwable {
@@ -205,7 +202,7 @@
if (method.getDeclaringClass().equals(Object.class)) {
return method.invoke(this, creationArgs);
}
-
+
AssistedConstructor<?> constructor =
factoryMethodToConstructor.get(method);
Object[] constructorArgs = gatherArgsForConstructor(
constructor, creationArgs);
@@ -220,7 +217,7 @@
int numParams = constructor.getAllParameters().size();
int argPosition = 0;
Object[] result = new Object[numParams];
-
+
for (int i = 0; i < numParams; i++) {
Parameter parameter = constructor.getAllParameters().get(i);
if (parameter.isProvidedByFactory()) {
@@ -234,8 +231,8 @@
}
};
- return (F) Proxy.newProxyInstance(factoryType.getClassLoader(),
- new Class[] {factoryType}, invocationHandler);
+ return
factoryType.cast(Proxy.newProxyInstance(factoryType.getClassLoader(),
+ new Class[] {factoryType}, invocationHandler));
}
private ConfigurationException newConfigurationException(String format,
Object... args) {
Modified: trunk/guice.iml
==============================================================================
--- trunk/guice.iml (original)
+++ trunk/guice.iml Mon Dec 1 22:16:53 2008
@@ -66,7 +66,7 @@
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="module-library">
+ <orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/build" />
Modified: trunk/guice.ipr
==============================================================================
--- trunk/guice.ipr (original)
+++ trunk/guice.ipr Mon Dec 1 22:16:53 2008
@@ -339,6 +339,7 @@
<inspection_tool class="ThrowableInstanceNeverThrown"
level="WARNING" enabled="false" />
<inspection_tool class="InjectOfNonPublicMember" level="WARNING"
enabled="false" />
<inspection_tool class="ThrowableResultOfMethodCallIgnored"
level="WARNING" enabled="false" />
+ <inspection_tool class="BindingAnnotationWithoutInject"
level="WARNING" enabled="false" />
</profile>
</profiles>
<list size="4">
@@ -517,7 +518,6 @@
<module
fileurl="file://$PROJECT_DIR$/extensions/commands/commands.iml"
filepath="$PROJECT_DIR$/extensions/commands/commands.iml" />
<module fileurl="file://$PROJECT_DIR$/guice.iml"
filepath="$PROJECT_DIR$/guice.iml" />
<module
fileurl="file://$PROJECT_DIR$/extensions/multibindings/multibindings.iml"
filepath="$PROJECT_DIR$/extensions/multibindings/multibindings.iml" />
- <module
fileurl="file://$PROJECT_DIR$/extensions/privatemodules/privatemodules.iml"
filepath="$PROJECT_DIR$/extensions/privatemodules/privatemodules.iml" />
<module fileurl="file://$PROJECT_DIR$/servlet/servlet.iml"
filepath="$PROJECT_DIR$/servlet/servlet.iml" />
<module fileurl="file://$PROJECT_DIR$/spring/spring.iml"
filepath="$PROJECT_DIR$/spring/spring.iml" />
<module
fileurl="file://$PROJECT_DIR$/struts2/example/struts2-example.iml"
filepath="$PROJECT_DIR$/struts2/example/struts2-example.iml" />
@@ -577,7 +577,7 @@
<component name="libraryTable">
<library name="collect">
<CLASSES>
- <root
url="jar://$PROJECT_DIR$/lib/build/google-collect-snapshot-20080530.jar!/"
/>
+ <root
url="jar://$PROJECT_DIR$/lib/build/google-collect-snapshot-20081129.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
Modified: trunk/servlet/test/com/google/inject/servlet/ServletTest.java
==============================================================================
--- trunk/servlet/test/com/google/inject/servlet/ServletTest.java
(original)
+++ trunk/servlet/test/com/google/inject/servlet/ServletTest.java Mon Dec
1 22:16:53 2008
@@ -21,7 +21,11 @@
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
+import com.google.inject.Provider;
+import com.google.inject.name.Names;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.Iterator;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
@@ -33,6 +37,7 @@
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.isNull;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
@@ -41,133 +46,102 @@
*/
public class ServletTest extends TestCase {
- public void testNewRequestObject()
- throws CreationException, IOException, ServletException {
- final Injector injector = createInjector();
-
- GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request =
createMock(HttpServletRequest.class);
-
- String name = Key.get(InRequest.class).toString();
- expect(request.getAttribute(name)).andReturn(null);
- request.setAttribute(eq(name), isA(InRequest.class));
-
- final boolean[] invoked = new boolean[1];
- FilterChain filterChain = new FilterChain() {
- public void doFilter(ServletRequest servletRequest,
- ServletResponse servletResponse) {
- invoked[0] = true;
+ final Key<InSession> sessionKey = Key.get(InSession.class);
+ final Key<InRequest> requestKey = Key.get(InRequest.class);
+ final Key<String> nullSessionKey = Key.get(String.class,
Names.named("null session"));
+ final Key<String> nullRequestKey = Key.get(String.class,
Names.named("null request"));
+ final Injector injector = createInjector();
+ final GuiceFilter filter = new GuiceFilter();
+ final HttpServletRequest request = createMock(HttpServletRequest.class);
+ final HttpSession session = createMock(HttpSession.class);
+
+ FilterChain filterChain;
+ boolean invoked;
+
+ public void testNewRequestObject() throws Exception {
+ expect(request.getAttribute(requestKey.toString())).andReturn(null);
+ request.setAttribute(eq(requestKey.toString()), isA(InRequest.class));
+
+ filterChain = new FilterChain() {
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse) {
+ invoked = true;
assertSame(request, servletRequest);
assertNotNull(injector.getInstance(InRequest.class));
}
};
- replay(request);
-
- filter.doFilter(request, null, filterChain);
-
- verify(request);
- assertTrue(invoked[0]);
+ replayFilterAndVerify();
}
- public void testExistingRequestObject()
- throws CreationException, IOException, ServletException {
- final Injector injector = createInjector();
+ public void testNullRequestObject() throws Exception {
+
expect(request.getAttribute(nullRequestKey.toString())).andReturn(null).times(2);
+ request.setAttribute(eq(nullRequestKey.toString()), isNull());
- GuiceFilter filter = new GuiceFilter();
+ expect(request.getSession()).andReturn(session);
+
expect(session.getAttribute(nullSessionKey.toString())).andReturn(null);
+ session.setAttribute(eq(nullSessionKey.toString()), isNull());
+
+ filterChain = new FilterChain() {
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse) {
+ invoked = true;
+ assertSame(request, servletRequest);
+ assertNull(injector.getInstance(nullRequestKey));
+ assertNull(injector.getInstance(nullRequestKey));
+ assertNull(injector.getInstance(nullSessionKey));
+ assertNull(injector.getInstance(nullSessionKey));
+ }
+ };
- final HttpServletRequest request =
createMock(HttpServletRequest.class);
+ replayFilterAndVerify();
+ }
+ public void testExistingRequestObject() throws Exception {
final InRequest inRequest = new InRequest();
- String name = Key.get(InRequest.class).toString();
- expect(request.getAttribute(name)).andReturn(inRequest).times(2);
+
expect(request.getAttribute(requestKey.toString())).andReturn(inRequest).times(2);
- final boolean[] invoked = new boolean[1];
- FilterChain filterChain = new FilterChain() {
- public void doFilter(ServletRequest servletRequest,
- ServletResponse servletResponse) {
- invoked[0] = true;
+ filterChain = new FilterChain() {
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse) {
+ invoked = true;
assertSame(request, servletRequest);
assertSame(inRequest, injector.getInstance(InRequest.class));
assertSame(inRequest, injector.getInstance(InRequest.class));
}
};
- replay(request);
-
- filter.doFilter(request, null, filterChain);
-
- verify(request);
- assertTrue(invoked[0]);
+ replayFilterAndVerify();
}
- public void testNewSessionObject()
- throws CreationException, IOException, ServletException {
- final Injector injector = createInjector();
-
- GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request =
createMock(HttpServletRequest.class);
- final HttpSession session = createMock(HttpSession.class);
-
- String name = Key.get(InSession.class).toString();
-
+ public void testNewSessionObject() throws Exception {
expect(request.getSession()).andReturn(session);
- expect(session.getAttribute(name)).andReturn(null);
- session.setAttribute(eq(name), isA(InSession.class));
+ expect(session.getAttribute(sessionKey.toString())).andReturn(null);
+ session.setAttribute(eq(sessionKey.toString()), isA(InSession.class));
- final boolean[] invoked = new boolean[1];
- FilterChain filterChain = new FilterChain() {
- public void doFilter(ServletRequest servletRequest,
- ServletResponse servletResponse) {
- invoked[0] = true;
+ filterChain = new FilterChain() {
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse) {
+ invoked = true;
assertSame(request, servletRequest);
assertNotNull(injector.getInstance(InSession.class));
}
};
- replay(request, session);
-
- filter.doFilter(request, null, filterChain);
-
- verify(request, session);
- assertTrue(invoked[0]);
+ replayFilterAndVerify();
}
- public void testExistingSessionObject()
- throws CreationException, IOException, ServletException {
- final Injector injector = createInjector();
-
- GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request =
createMock(HttpServletRequest.class);
- final HttpSession session = createMock(HttpSession.class);
-
- String name = Key.get(InSession.class).toString();
-
+ public void testExistingSessionObject() throws Exception {
final InSession inSession = new InSession();
expect(request.getSession()).andReturn(session).times(2);
- expect(session.getAttribute(name)).andReturn(inSession).times(2);
+
expect(session.getAttribute(sessionKey.toString())).andReturn(inSession).times(2);
- final boolean[] invoked = new boolean[1];
- FilterChain filterChain = new FilterChain() {
- public void doFilter(ServletRequest servletRequest,
- ServletResponse servletResponse) {
- invoked[0] = true;
+ filterChain = new FilterChain() {
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse) {
+ invoked = true;
assertSame(request, servletRequest);
-
assertSame(inSession, injector.getInstance(InSession.class));
assertSame(inSession, injector.getInstance(InSession.class));
}
};
- replay(request, session);
-
- filter.doFilter(request, null, filterChain);
-
- verify(request, session);
- assertTrue(invoked[0]);
+ replayFilterAndVerify();
}
private Injector createInjector() throws CreationException {
@@ -176,13 +150,33 @@
install(new ServletModule());
bind(InSession.class);
bind(InRequest.class);
+ bind(nullRequestKey).toProvider(new
NullThenNonNullProvider()).in(RequestScoped.class);
+ bind(nullSessionKey).toProvider(new
NullThenNonNullProvider()).in(SessionScoped.class);
}
});
}
+ private void replayFilterAndVerify() throws IOException,
ServletException {
+ replay(request);
+ replay(session);
+
+ filter.doFilter(request, null, filterChain);
+
+ verify(request);
+ verify(session);
+ assertTrue(invoked);
+ }
+
@SessionScoped
static class InSession {}
@RequestScoped
static class InRequest {}
+
+ static class NullThenNonNullProvider implements Provider<String> {
+ final Iterator<String> iterator = Arrays.asList(null, "A").iterator();
+ public String get() {
+ return iterator.next();
+ }
+ }
}
Modified: trunk/test/com/google/inject/ScopesTest.java
==============================================================================
--- trunk/test/com/google/inject/ScopesTest.java (original)
+++ trunk/test/com/google/inject/ScopesTest.java Mon Dec 1 22:16:53 2008
@@ -24,6 +24,8 @@
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
@@ -308,6 +310,20 @@
"1) More than one scope annotation was found: ",
"while locating " + SingletonAndCustomScoped.class.getName());
}
+ }
+
+ public void testNullScopedAsASingleton() {
+ Provider<String> unscoped = new Provider<String>() {
+ final Iterator<String> values = Arrays.asList(null, "A").iterator();
+ public String get() {
+ return values.next();
+ }
+ };
+
+ Provider<String> scoped =
Scopes.SINGLETON.scope(Key.get(String.class), unscoped);
+ assertNull(scoped.get());
+ assertNull(scoped.get());
+ assertNull(scoped.get());
}
class RememberProviderScope implements Scope {
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---