Comments (5)
From limpbizkit on February 27, 2007 21:28:01
I imagine there are scenarios where null is reasonable. Suppose you have a service that checks permissions
against a Guice-provided user. No user might imply non-interactive use, such as by a batch process:
public class AccountService {
@
Inject User user;
@
Inject Customer customer;
public Account getAccount() {
Account account = lookupCustomerAccount(customer.getId());
if(user != null && !account.isViewableBy(user)) {
throw new InsufficientPermissionsException();
}
return account;
}
}
IMHO, this particular situation doesn't really lend itself to a null-object pattern.
But I do think injecting null is something you'd want to do very rarely. So perhaps instead of banning it
outright, we should make it on-by-default and users could opt-out (like required=false):
@
Inject(nullable=true) User user;
from guice.
From kevinb9n on February 28, 2007 11:17:34
I don't see why a null-object pattern wouldn't work here. But actually in this case
you don't really want a User at all, you want a ThingThatDecidesPermissions or
PermissionProfile or Authorizations or some such object, and that should never be null.
Null is stinky...
from guice.
From crazyboblee on February 28, 2007 12:24:17
Or an anonymous/guest user. Down with null.
from guice.
From crazyboblee on February 28, 2007 14:45:08
(No comment was entered for this change.)
Labels: 1.0RC3
from guice.
From kevinb9n on March 01, 2007 02:58:35
Fixed with revision 248 .
Status: Fixed
from guice.
Related Issues (20)
- Can I have more than one aspect for a method and if yes how to ensure order of them with Guice AOP
- Spark2.4.7,Guice:4.0: java.lang.ArrayIndexOutOfBoundsException: 67737
- Deadlock in multi-threading enviroment (Guice 5.1)
- enable @Inject for records HOT 4
- InternalProvisionException.errorInUserCode discards important context about user errors HOT 1
- Annotations @Provides and @Singleton do not work together HOT 2
- HiddenClassDefiner incorrectly assumes Unsafe.staticFieldBase(Field) returns a real Object HOT 8
- Bob Lee,God bless You
- Feature Request: MicroProfile-config integration: Allow injecting annotations with jakarta.inject.Qualifier HOT 12
- where are the installation instructions? HOT 4
- java.lang.ClassCastException: class com.google.inject.servlet.GuiceFilter cannot be cast to class jakarta.servlet.Filter (com.google.inject.servlet.GuiceFilter is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @e383572; jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader @2ef1e4fa) HOT 1
- Changed behaviour in Guice 7 HOT 3
- Struts 6.x.x not working with Guice HOT 9
- Possible leak using Guice HOT 5
- Performance Issue in getJustInTimeBinding Method HOT 1
- Misleading exception message for nested Guice injector failure
- 8 Flaky tests in the module extensions/throwingproviders
- Request/Question: Provide non-jarjar'd builds
- Guice AOP is not compatible with Kotlin Coroutines HOT 2
- Enable to define a custom "@Inject" marker (ie add some extension point for reflection doing getAnnotation/isAnnotationPresent on this marker)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from guice.