如果您想了解Button按钮--inject与provide的相关知识,那么本文是一篇不可错过的文章,我们将对button按钮进行全面详尽的解释,并且为您提供关于Angular$injector可以用
如果您想了解Button按钮--inject与provide的相关知识,那么本文是一篇不可错过的文章,我们将对button 按钮进行全面详尽的解释,并且为您提供关于Angular $ injector可以用$ provide.decorator装饰吗?、angularjs – 错误:[$injector:unpr]未知的提供者:$routeProvider、com.google.inject.throwingproviders.CheckedProvider的实例源码、com.google.inject.util.Providers的实例源码的有价值的信息。
本文目录一览:- Button按钮--inject与provide(button 按钮)
- Angular $ injector可以用$ provide.decorator装饰吗?
- angularjs – 错误:[$injector:unpr]未知的提供者:$routeProvider
- com.google.inject.throwingproviders.CheckedProvider的实例源码
- com.google.inject.util.Providers的实例源码
Button按钮--inject与provide(button 按钮)
inject 和 provider 是vue中的组合选项,需要一起使用。目的是允许一个祖先组件向其所有子孙后代注入依赖(简单地说就是祖先组件向子孙后代传值的一种方法,祖先组件通过provider提供变量,子孙后代通过inject注入接收变量)
provider: Object || () => Object
inject: Array || Object
Eg.
button.vue:


1 <template>
2 <button
3 4 @click="handleClick"
5 :disabled="buttonDisabled || loading"
6 :autofocus="autofocus"
7 :type="nativeType"
8 :19 >
20 <iv-if="loading"></i>
21 <i :v-if="icon && !loading"></i>
22 <span v-if="$slots.default"><slot></slot></span>
23 </button>
24 </template>
25 <script>
26 export default {
27 name: ''ElButton'',
28
29 // 通过inject向button中注入变量
30 inject: {
31 elForm: {
32 default: ''''
33 },
34 elFormItem: {
35 default: ''''
36 }
37 },
38
39 props: {
40 type: {
41 type: String,
42 default: ''default''
43 },
44 size: String,
45 icon: {
46 type: String,
47 default: ''''
48 },
49 nativeType: {
50 type: String,
51 default: ''button''
52 },
53 loading: Boolean,
54 disabled: Boolean,
55 plain: Boolean,
56 autofocus: Boolean,
57 round: Boolean,
58 circle: Boolean
59 },
60
61 computed: {
62 _elFormItemSize() {
63 return (this.elFormItem || {}).elFormItemSize;
64 },
65 buttonSize() {
66 return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;
67 },
68 buttonDisabled() {
69 return this.disabled || (this.elForm || {}).disabled; // 通过inject注入的form变量,获得祖先节点form的disabled属性
70 }
71 },
72
73 methods: {
74 handleClick(evt) {
75 this.$emit(''click'', evt);
76 }
77 }
78 };
79 </script>
form.vue:


1 <template>
2 <form:>
6 <slot></slot>
7 </form>
8 </template>
9 <script>
10 import objectAssign from ''element-ui/src/utils/merge'';
11
12 export default {
13 name: ''ElForm'',
14
15 componentName: ''ElForm'',
16
17 // 通过provider向子孙后代注入变量elform,讲this(即form)注入给子孙后代,后代通过获取此变量获取form中的各种配置,如disabled属性等
18 provide() {
19 return {
20 elForm: this
21 };
22 },
23
24 props: {
25 model: Object,
26 rules: Object,
27 labelPosition: String,
28 labelWidth: String,
29 labelSuffix: {
30 type: String,
31 default: ''''
32 },
33 inline: Boolean,
34 inlineMessage: Boolean,
35 statusIcon: Boolean,
36 showMessage: {
37 type: Boolean,
38 default: true
39 },
40 size: String,
41 disabled: Boolean,
42 validateOnRuleChange: {
43 type: Boolean,
44 default: true
45 },
46 hideRequiredAsterisk: {
47 type: Boolean,
48 default: false
49 }
50 },
51 watch: {
52 rules() {
53 if (this.validateOnRuleChange) {
54 this.validate(() => {});
55 }
56 }
57 },
58 data() {
59 return {
60 fields: []
61 };
62 },
63 created() {
64 this.$on(''el.form.addField'', (field) => {
65 if (field) {
66 this.fields.push(field);
67 }
68 });
69 /* istanbul ignore next */
70 this.$on(''el.form.removeField'', (field) => {
71 if (field.prop) {
72 this.fields.splice(this.fields.indexOf(field), 1);
73 }
74 });
75 },
76 methods: {
77 resetFields() {
78 if (!this.model) {
79 process.env.NODE_ENV !== ''production'' &&
80 console.warn(''[Element Warn][Form]model is required for resetFields to work.'');
81 return;
82 }
83 this.fields.forEach(field => {
84 field.resetField();
85 });
86 },
87 clearValidate(props = []) {
88 const fields = props.length
89 ? this.fields.filter(field => props.indexOf(field.prop) > -1)
90 : this.fields;
91 fields.forEach(field => {
92 field.clearValidate();
93 });
94 },
95 validate(callback) {
96 if (!this.model) {
97 console.warn(''[Element Warn][Form]model is required for validate to work!'');
98 return;
99 }
100
101 let promise;
102 // if no callback, return promise
103 if (typeof callback !== ''function'' && window.Promise) {
104 promise = new window.Promise((resolve, reject) => {
105 callback = function(valid) {
106 valid ? resolve(valid) : reject(valid);
107 };
108 });
109 }
110
111 let valid = true;
112 let count = 0;
113 // 如果需要验证的fields为空,调用验证时立刻返回callback
114 if (this.fields.length === 0 && callback) {
115 callback(true);
116 }
117 let invalidFields = {};
118 this.fields.forEach(field => {
119 field.validate('''', (message, field) => {
120 if (message) {
121 valid = false;
122 }
123 invalidFields = objectAssign({}, invalidFields, field);
124 if (typeof callback === ''function'' && ++count === this.fields.length) {
125 callback(valid, invalidFields);
126 }
127 });
128 });
129
130 if (promise) {
131 return promise;
132 }
133 },
134 validateField(prop, cb) {
135 let field = this.fields.filter(field => field.prop === prop)[0];
136 if (!field) { throw new Error(''must call validateField with valid prop string!''); }
137
138 field.validate('''', cb);
139 }
140 }
141 };
142 </script>
form-item.vue


1 <template>
2 <div:>
12 <label :for="labelFor":v-if="label || $slots.label">
13 <slot name="label">{{label + form.labelSuffix}}</slot>
14 </label>
15 <div:>
16 <slot></slot>
17 <transition name="el-zoom-in-top">
18 <slot
19 v-if="validateState === ''error'' && showMessage && form.showMessage"
20 name="error"
21 :error="validateMessage">
22 <div
23 24 : 29 >
30 {{validateMessage}}
31 </div>
32 </slot>
33 </transition>
34 </div>
35 </div>
36 </template>
37 <script>
38 import AsyncValidator from ''async-validator'';
39 import emitter from ''element-ui/src/mixins/emitter'';
40 import objectAssign from ''element-ui/src/utils/merge'';
41 import { noop, getPropByPath } from ''element-ui/src/utils/util'';
42
43 export default {
44 name: ''ElFormItem'',
45
46 componentName: ''ElFormItem'',
47
48 mixins: [emitter],
49
50 // 通过provider向子孙后代注入变量elform,讲this(即form-item)注入给子孙后代,后代通过获取此变量获取form中的各种配置,如size属性等
51 provide() {
52 return {
53 elFormItem: this
54 };
55 },
56
57 inject: [''elForm''],
58
59 props: {
60 label: String,
61 labelWidth: String,
62 prop: String,
63 required: {
64 type: Boolean,
65 default: undefined
66 },
67 rules: [Object, Array],
68 error: String,
69 validateStatus: String,
70 for: String,
71 inlineMessage: {
72 type: [String, Boolean],
73 default: ''''
74 },
75 showMessage: {
76 type: Boolean,
77 default: true
78 },
79 size: String
80 },
81 watch: {
82 error: {
83 immediate: true,
84 handler(value) {
85 this.validateMessage = value;
86 this.validateState = value ? ''error'' : '''';
87 }
88 },
89 validateStatus(value) {
90 this.validateState = value;
91 }
92 },
93 computed: {
94 labelFor() {
95 return this.for || this.prop;
96 },
97 labelStyle() {
98 const ret = {};
99 if (this.form.labelPosition === ''top'') return ret;
100 const labelWidth = this.labelWidth || this.form.labelWidth;
101 if (labelWidth) {
102 ret.width = labelWidth;
103 }
104 return ret;
105 },
106 contentStyle() {
107 const ret = {};
108 const label = this.label;
109 if (this.form.labelPosition === ''top'' || this.form.inline) return ret;
110 if (!label && !this.labelWidth && this.isNested) return ret;
111 const labelWidth = this.labelWidth || this.form.labelWidth;
112 if (labelWidth) {
113 ret.marginLeft = labelWidth;
114 }
115 return ret;
116 },
117 form() {
118 let parent = this.$parent;
119 let parentName = parent.$options.componentName;
120 while (parentName !== ''ElForm'') {
121 if (parentName === ''ElFormItem'') {
122 this.isNested = true;
123 }
124 parent = parent.$parent;
125 parentName = parent.$options.componentName;
126 }
127 return parent;
128 },
129 fieldValue() {
130 const model = this.form.model;
131 if (!model || !this.prop) { return; }
132
133 let path = this.prop;
134 if (path.indexOf('':'') !== -1) {
135 path = path.replace(/:/, ''.'');
136 }
137
138 return getPropByPath(model, path, true).v;
139 },
140 isRequired() {
141 let rules = this.getRules();
142 let isRequired = false;
143
144 if (rules && rules.length) {
145 rules.every(rule => {
146 if (rule.required) {
147 isRequired = true;
148 return false;
149 }
150 return true;
151 });
152 }
153 return isRequired;
154 },
155 _formSize() {
156 return this.elForm.size;
157 },
158 elFormItemSize() {
159 return this.size || this._formSize;
160 },
161 sizeClass() {
162 return this.elFormItemSize || (this.$ELEMENT || {}).size;
163 }
164 },
165 data() {
166 return {
167 validateState: '''',
168 validateMessage: '''',
169 validateDisabled: false,
170 validator: {},
171 isNested: false
172 };
173 },
174 methods: {
175 validate(trigger, callback = noop) {
176 this.validateDisabled = false;
177 const rules = this.getFilteredRule(trigger);
178 if ((!rules || rules.length === 0) && this.required === undefined) {
179 callback();
180 return true;
181 }
182
183 this.validateState = ''validating'';
184
185 const descriptor = {};
186 if (rules && rules.length > 0) {
187 rules.forEach(rule => {
188 delete rule.trigger;
189 });
190 }
191 descriptor[this.prop] = rules;
192
193 const validator = new AsyncValidator(descriptor);
194 const model = {};
195
196 model[this.prop] = this.fieldValue;
197
198 validator.validate(model, { firstFields: true }, (errors, invalidFields) => {
199 this.validateState = !errors ? ''success'' : ''error'';
200 this.validateMessage = errors ? errors[0].message : '''';
201
202 callback(this.validateMessage, invalidFields);
203 this.elForm && this.elForm.$emit(''validate'', this.prop, !errors, this.validateMessage || null);
204 });
205 },
206 clearValidate() {
207 this.validateState = '''';
208 this.validateMessage = '''';
209 this.validateDisabled = false;
210 },
211 resetField() {
212 this.validateState = '''';
213 this.validateMessage = '''';
214
215 let model = this.form.model;
216 let value = this.fieldValue;
217 let path = this.prop;
218 if (path.indexOf('':'') !== -1) {
219 path = path.replace(/:/, ''.'');
220 }
221
222 let prop = getPropByPath(model, path, true);
223
224 this.validateDisabled = true;
225 if (Array.isArray(value)) {
226 prop.o[prop.k] = [].concat(this.initialValue);
227 } else {
228 prop.o[prop.k] = this.initialValue;
229 }
230
231 this.broadcast(''ElTimeSelect'', ''fieldReset'', this.initialValue);
232 },
233 getRules() {
234 let formRules = this.form.rules;
235 const selfRules = this.rules;
236 const requiredRule = this.required !== undefined ? { required: !!this.required } : [];
237
238 const prop = getPropByPath(formRules, this.prop || '''');
239 formRules = formRules ? (prop.o[this.prop || ''''] || prop.v) : [];
240
241 return [].concat(selfRules || formRules || []).concat(requiredRule);
242 },
243 getFilteredRule(trigger) {
244 const rules = this.getRules();
245
246 return rules.filter(rule => {
247 if (!rule.trigger || trigger === '''') return true;
248 if (Array.isArray(rule.trigger)) {
249 return rule.trigger.indexOf(trigger) > -1;
250 } else {
251 return rule.trigger === trigger;
252 }
253 }).map(rule => objectAssign({}, rule));
254 },
255 onFieldBlur() {
256 this.validate(''blur'');
257 },
258 onFieldChange() {
259 if (this.validateDisabled) {
260 this.validateDisabled = false;
261 return;
262 }
263
264 this.validate(''change'');
265 }
266 },
267 mounted() {
268 if (this.prop) {
269 this.dispatch(''ElForm'', ''el.form.addField'', [this]);
270
271 let initialValue = this.fieldValue;
272 if (Array.isArray(initialValue)) {
273 initialValue = [].concat(initialValue);
274 }
275 Object.defineProperty(this, ''initialValue'', {
276 value: initialValue
277 });
278
279 let rules = this.getRules();
280
281 if (rules.length || this.required !== undefined) {
282 this.$on(''el.form.blur'', this.onFieldBlur);
283 this.$on(''el.form.change'', this.onFieldChange);
284 }
285 }
286 },
287 beforeDestroy() {
288 this.dispatch(''ElForm'', ''el.form.removeField'', [this]);
289 }
290 };
291 </script>
Angular $ injector可以用$ provide.decorator装饰吗?
也许这是一个可怕的主意,但如果是这样,请告诉我为什么,然后假装这是一项学术活动,不会在生产中日渐成熟。
我想在Angular $
injector服务中添加一些逻辑,以监视何时将某些服务注入到其他服务中。由于Angular似乎提供了一种装饰服务的机制,因此我认为这是可行的方法。但是,以下代码将引发错误。
(function () { ''use strict''; var app = angular.module(''app''); app.config([''$provide'', function ($provide) { $provide.decorator(''$injector'', [''$log'', ''$delegate'', addLoggingToInjector]); }]); function addLoggingToInjector($log, $delegate) { var baseInstantiate = $delegate.instantiate; var baseInvoke = $delegate.invoke; $delegate.instantiate = function (type, locals) { // $log.debug(''Calling $injector.instantiate''); baseInstantiate(type, locals); }; $delegate.invoke = function (fn, self, locals) { // $log.debug(''Calling $injector.invoke''); baseInvoke(fn, self, locals); }; return $delegate; };})();
具体错误是:
未捕获的错误:[$ injector:modulerr]由于以下原因而无法实例化模块应用程序:错误:[$ injector:unpr]未知提供程序:$
injectorProvider
答案1
小编典典您不能在$ injector上使用Angular装饰器服务。正如Artur所说,$injector
它与其他服务有些不同。但是我们可以创建自己的装饰器。
为什么我们不能使用Angular的装饰器
在代码级别,问题在于$injector
没有构造函数-没有$injectorProvider
。
例如,这两个都返回true:
$injector.has(''$location'');$injector.has(''$locationProvider'')
但是,虽然返回true:
$injector.has(''$injector'')
这将返回false:
$injector.has(''$injectorProvider'')
当我们查看Angular装饰器函数时,我们看到了重要性:
function decorator(serviceName, decorFn) { var origProvider = providerInjector.get(serviceName + providerSuffix), orig$get = origProvider.$get; origProvider.$get = function() { var origInstance = instanceInjector.invoke(orig$get, origProvider); return instanceInjector.invoke(decorFn, null, {$delegate: origInstance}); };}
和
providerSuffix = ''Provider''
因此,Angular装饰器希望在服务的构造函数(serviceName + providerSuffix
)上进行操作。实用上,
由于没有$injectorProvider
, 所以 不能使用decorator 。
解
我们可以做的是自己替换Angular注入器的get
功能,方法是将注入器的默认值替换为get
调用原始Angular定义的默认值,然后调用get
我们的函数。
我们将其应用到$injector
而不是$injectorProvider
像这样不存在的应用:
app.config([''$provide'',''$injector'', function ($provide,$injector) { // The function we''ll add to the injector myFunc = function () { console.log("injector called ", arguments); }; // Get a copy of the injector''s get function var origProvider = $injector, origGet = origProvider.get; //Override injector''s get with our own origProvider.get = function() { // Call the original get function var returnValue = origGet.apply(this, arguments); // Call our function myFunc.apply(this,arguments); return returnValue; }}]);
您会看到注入的提供程序是第一个扩充,因此会app.value(''aValue'', ''something'');
产生以下日志语句:
injector called ["aValueProvider"]
演示小提琴
angularjs – 错误:[$injector:unpr]未知的提供者:$routeProvider
$script([ 'res/js/angular-1.2.0-rc.2.js','res/js/angular-route-1.2.0-rc.2.js','res/js/app.js?v=2',],function() { // when all is done,execute bootstrap angular application angular.bootstrap(document,['myApp']); });
在app.js中,我有以下:
'use strict'; angular.module('myApp',[]). config(['$routeProvider',function($routeProvider) { $routeProvider.otherwise({redirectTo: '/home'}); }]);
当我运行这个程序,我得到以下错误:
Error: [$injector:unpr] UnkNown provider: $routeProvider
我已经阅读了一些其他的回应,说像1)注入’ngroute’或2)你需要在路由中定义控制器。我的问题是,我不明白如何注入ngroute。此外,我真的需要在路由中定义控制器吗?这种方法似乎不可扩展。我的应用程式可能有一千次浏览。在我看来,它似乎有必要有一种方式来定义路由,而无需加载所有的控制器。
angular.module('myApp',['ngRoute'])
,我们还需要引用单独的angular-route.js文件
<script src="angular.js"> <script src="angular-route.js">
见https://docs.angularjs.org/api/ngRoute
com.google.inject.throwingproviders.CheckedProvider的实例源码
@Test public void thrownException_threwUnexpected_expectFailure() { Class<? extends Throwable> expected = SummerException.class; Class<? extends Throwable> unexpected = UnsupportedOperationException.class; CheckedProvider<String> provider = CheckedProviders.throwing(StringCheckedProvider.class,unexpected); String message = String.format( "exception thrown by <%s>: Not true that <%s> is an instance of <%s>. " + "It is an instance of <%s>",getThrowingProviderName(UnsupportedOperationException.class.getName()),UnsupportedOperationException.class.getName(),SummerException.class.getName(),UnsupportedOperationException.class.getName()); expectWhenTesting().that(provider).thrownException().isinstanceOf(expected); assertthat(expect.getFailure()).hasMessageThat().isEqualTo(message); }
@Test public void providedValue_gotExpected_expectSuccess() { String expected = "keep Summer safe"; CheckedProvider<String> provider = CheckedProviders.of(StringCheckedProvider.class,expected); assertthat(provider).providedValue().isEqualTo(expected); }
@Test public void providedValue_gotUnexpected_expectFailure() { String expected = "keep Summer safe"; String unexpected = "Summer is unsafe"; CheckedProvider<String> provider = CheckedProviders.of(StringCheckedProvider.class,unexpected); String message = String.format( "value provided by <%s>: Not true that <%s> is equal to <%s>",getReturningProviderName(unexpected),unexpected,expected); expectWhenTesting().that(provider).providedValue().isEqualTo(expected); assertthat(expect.getFailure()).hasMessageThat().isEqualTo(message); }
@Test public void providedValue_throws_expectFailure() { CheckedProvider<String> provider = CheckedProviders.throwing(StringCheckedProvider.class,SummerException.class); String message = String.format( "checked provider <%s> threw an exception",getThrowingProviderName(SummerException.class.getName())); expectWhenTesting().that(provider).providedValue(); AssertionError expected = expect.getFailure(); assertthat(expected).hasCauseThat().isinstanceOf(SummerException.class); assertthat(expected).hasMessageThat().isEqualTo(message); }
@Test public void thrownException_threwExpected_expectSuccess() { CheckedProvider<?> provider = CheckedProviders.throwing(StringCheckedProvider.class,SummerException.class); assertthat(provider).thrownException().isinstanceOf(SummerException.class); }
@Test public void thrownException_gets_expectFailure() { String getValue = "keep WINTER IS COMING safe"; CheckedProvider<String> provider = CheckedProviders.of(StringCheckedProvider.class,getValue); String message = String.format( "Not true that <%s> threw <an exception>. It provided <%s>",getReturningProviderName(getValue),getValue); expectWhenTesting().that(provider).thrownException(); assertthat(expect.getFailure()).hasMessageThat().isEqualTo(message); }
private SimpleSubjectBuilder< CheckedProviderSubject<String,CheckedProvider<String>>,CheckedProvider<String>> expectWhenTesting() { return expect .whenTesting() .about(CheckedProviderSubject.<String,CheckedProvider<String>>checkedProviders()); }
public static <T,P extends CheckedProvider<T>> Subject.Factory<CheckedProviderSubject<T,P>,P> checkedProviders() { return new CheckedProviderSubjectFactory<>(); }
public static <T,P extends CheckedProvider<T>> CheckedProviderSubject<T,P> assertthat( @Nullable P provider) { return assertAbout(CheckedProviderSubject.<T,P>checkedProviders()).that(provider); }
com.google.inject.util.Providers的实例源码
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(ComponentFactoryRegistrar.class).to(MyComponentFactoryRegistrar.class); bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("RotaBuilder"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("RotaBuilder"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider( Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); // if uncommented,then overrides isis.appManifest in config file. // bind(AppManifest.class).toInstance(new DomainAppAppManifest()); } }; return Modules.override(isisDefaults).with(overrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("SiGeSe"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("brandlogoSignin")).toInstance("/about/images/login.png"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("SiGeSe"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
Formatter(final String pattern) { final List<String> patterns = Splitter.on(VAR_BEGIN).omitEmptyStrings().splitToList(pattern); patterns.forEach(pt -> { if (!pt.contains(VAR_END)) { appenderList.add(Providers.of(pt)); } else { StringTokenizer token = new StringTokenizer(pt,VAR_END); String guiceKey = token.nextToken(); String rawString = null; if (token.hasMoretokens()) { rawString = token.nextToken(); } final KeyResolver resolver = new KeyResolver(guiceKey); appenderList.add(resolver); resolvers.add(resolver); appenderList.add(Providers.of(rawString)); } }); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Food App"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Food App"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider( Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); // if uncommented,then overrides isis.appManifest in config file. // bind(AppManifest.class).toInstance(new DomainAppAppManifest()); } }; return Modules.override(isisDefaults).with(overrides); }
@Test public void constructor_does_not_blow_up_if_metricslistener_is_null() { // given AppServerConfig asc = new AppServerConfig(configForTesting) { @Override protected List<Module> getAppGuiceModules(Config appConfig) { return Arrays.asList( Modules.override(new AppGuiceModule(appConfig)).with( binder -> binder .bind(new TypeLiteral<CodahaleMetricslistener>() {}) .toProvider(Providers.of(null))),new BackstopperRiposteConfigGuiceModule() ); } }; // expect assertthat(asc.metricslistener()).isNull(); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("ECP CRM"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); // bind(String.class).annotatedWith(Names.named("brandlogoHeader")).toInstance("/images/domainapp-logo-header.png"); // bind(String.class).annotatedWith(Names.named("brandlogoSignin")).toInstance("/images/domainapp-logo-signin.png"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("ECP CRM"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
protected void configurePersistence() { bind(String[].class).annotatedWith(Neo4j.class).toInstance(packages); if (null != properties) { bind(Properties.class).annotatedWith(Neo4j.class).toInstance(properties); } else { bind(Properties.class).annotatedWith(Neo4j.class).toProvider(Providers.of(null)); } bind(Neo4jPersistService.class).in(Singleton.class); bind(PersistService.class).to(Neo4jPersistService.class); bind(UnitOfWork.class).to(Neo4jPersistService.class); bind(Session.class).toProvider(Neo4jPersistService.class); transactionInterceptor = new Neo4jLocalTxnInterceptor(); requestInjection(transactionInterceptor); }
public void testGuicify330Provider() { Provider<String> jsr330Provider = new Provider<String>() { @Override public String get() { return "A"; } @Override public String toString() { return "jsr330Provider"; } }; com.google.inject.Provider<String> guicified = Providers .guicify(jsr330Provider); assertEquals("guicified(jsr330Provider)",guicified.toString()); assertEquals("A",guicified.get()); // when you guicify the Guice-friendly,it's a no-op assertSame(guicified,Providers.guicify(guicified)); }
public void testBindToInjectorWithListeningGivesSaneException() { try { Guice.createInjector(new AbstractModule() { @Override protected void configure() { bindListener(Matchers.any(),new Counter()); bind(Injector.class) .toProvider(Providers.<Injector> of(null)); } }); fail(); } catch (SaltaException ce) { assertContains(ce.getMessage(),"Binding to core guice framework type is not allowed: Injector."); } }
@Test public void testBindingToProvider() { try { Guice.createInjector(new AbstractModule() { @Override protected void configure() { bind(new TypeLiteral<Provider<String>>() { }).toInstance(Providers.of("A")); } }); fail(); } catch (SaltaException expected) { assertContains(expected.getMessage(),"Binding to core guice framework type is not allowed: Provider."); } }
@Override protected void configure() { bind(AbstractModule.class).annotatedWith(red) .toProvider(Providers.<AbstractModule> of(null)); bind(Binder.class).annotatedWith(red) .toProvider(Providers.<Binder> of(null)); bind(Binding.class).annotatedWith(red) .toProvider(Providers.<Binding> of(null)); bind(Injector.class).annotatedWith(red) .toProvider(Providers.<Injector> of(null)); bind(Key.class).annotatedWith(red) .toProvider(Providers.<Key> of(null)); bind(Module.class).annotatedWith(red) .toProvider(Providers.<Module> of(null)); bind(Provider.class).annotatedWith(red) .toProvider(Providers.<Provider> of(null)); bind(Scope.class).annotatedWith(red) .toProvider(Providers.<Scope> of(null)); bind(Stage.class).annotatedWith(red) .toProvider(Providers.<Stage> of(null)); bind(TypeLiteral.class).annotatedWith(red) .toProvider(Providers.<TypeLiteral> of(null)); bind(new TypeLiteral<Key<String>>() { }).toProvider(Providers.<Key<String>> of(null)); }
@Override protected void configure() { bind(CliConfiguration.class).toInstance(config); bind(JCommander.class).annotatedWith(Names.named("ParentCommander")) .toInstance(parentCommander); if (commander == null) { bind(JCommander.class).annotatedWith(Names.named("Commander")) .toProvider(Providers.of((JCommander) null)); bind(String.class).annotatedWith(Names.named("Command")) .toProvider(Providers.of((String) null)); } else { bind(JCommander.class).annotatedWith(Names.named("Commander")).toInstance(commander); bindConstant().annotatedWith(Names.named("Command")).to(command); } bind(Map.class).annotatedWith(Names.named("CommandMap")).toInstance(commands); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Domain App"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("brandlogoHeader")).toInstance("/images/domainapp-logo-header.png"); bind(String.class).annotatedWith(Names.named("brandlogoSignin")).toInstance("/images/domainapp-logo-signin.png"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Domain App"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Simple App"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Simple App"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider( Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); // if uncommented,then overrides isis.appManifest in config file. // bind(AppManifest.class).toInstance(new DomainAppAppManifest()); } }; return Modules.override(isisDefaults).with(overrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance(" Mejorar "); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(" Mejorar "); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Todo App"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("brandlogoHeader")).toInstance("/images/todoapp-logo-header.png"); bind(String.class).annotatedWith(Names.named("brandlogoSignin")).toInstance("/images/todoapp-logo-signin.png"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Todo App"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
@Override protected void setup(Binder binder) { configBinder(binder).bindConfig(BackupConfig.class); String provider = buildConfigObject(BackupConfig.class).getProvider(); if (provider == null) { binder.bind(BackupStore.class).toProvider(Providers.of(null)); } else { Module module = providers.get(provider); if (module == null) { binder.addError("UnkNown backup provider: %s",provider); } else { binder.install(module); } } binder.bind(BackupService.class).to(BackupServiceManager.class).in(Scopes.SINGLetoN); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Simple App"); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Simple App"); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
@Override protected void afterInit(SiteRun run) throws Exception { List<Module> modules = new ArrayList<>(); modules.add( new AbstractModule() { @Override protected void configure() { bind(Path.class).annotatedWith(SitePath.class).toInstance(getSitePath()); bind(browser.class); bind(String.class) .annotatedWith(SecureStoreClassName.class) .toProvider(Providers.of(getConfiguredSecureStoreClass())); } }); modules.add(new GerritServerConfigModule()); Guice.createInjector(modules).injectMembers(this); start(run); }
private Injector getSysInjector() { List<Module> modules = new ArrayList<>(); modules.add( new FactoryModule() { @Override protected void configure() { bind(Path.class).annotatedWith(SitePath.class).toInstance(getSitePath()); bind(ConsoleUI.class).toInstance(ConsoleUI.getInstance(password != null)); factory(Section.Factory.class); bind(Boolean.class).annotatedWith(InstallAllPlugins.class).toInstance(Boolean.FALSE); bind(new TypeLiteral<List<String>>() {}) .annotatedWith(InstallPlugins.class) .toInstance(new ArrayList<String>()); bind(String.class) .annotatedWith(SecureStoreClassName.class) .toProvider(Providers.of(getConfiguredSecureStoreClass())); } }); modules.add(new GerritServerConfigModule()); return Guice.createInjector(modules); }
Context( SchemaFactory<ReviewDb> schemaFactory,IdentifiedUser.GenericFactory userFactory,Account.Id accountId,Project.NameKey project) { this.schemaFactory = schemaFactory; this.userFactory = userFactory; this.accountId = accountId; this.project = project; map = new HashMap<>(); cleanup = new RequestCleanup(); map.put(DB_KEY,new RequestScopedReviewDbProvider(schemaFactory,Providers.of(cleanup))); map.put(RC_KEY,cleanup); IdentifiedUser user = userFactory.create(accountId); user.setAccesspath(Accesspath.GIT); map.put(USER_KEY,user); }
/** @see RequestScopePropagator#wrap(Callable) */ // ServletScopes#continueRequest is deprecated,but it's not obvIoUs their // recommended replacement is an appropriate drop-in solution; see // https://gerrit-review.googlesource.com/83971 @SuppressWarnings("deprecation") @Override protected <T> Callable<T> wrapImpl(Callable<T> callable) { Map<Key<?>,Object> seedMap = new HashMap<>(); // Request scopes appear to use specific keys in their map,instead of only // providers. Add bindings for both the key to the instance directly and the // provider to the instance to be safe. seedMap.put(Key.get(typeOfProvider(String.class),CanonicalWebUrl.class),Providers.of(url)); seedMap.put(Key.get(String.class,url); seedMap.put(Key.get(typeOfProvider(SocketAddress.class),RemotePeer.class),Providers.of(peer)); seedMap.put(Key.get(SocketAddress.class,peer); return ServletScopes.continueRequest(callable,seedMap); }
/** * Returns a materialized copy of the user with all dependencies. * * <p>Invoke all providers and factories of dependent objects and store the references to a copy * of the current identified user. * * @return copy of the identified user */ public IdentifiedUser materializedcopy() { Provider<SocketAddress> remotePeer; try { remotePeer = Providers.of(remotePeerProvider.get()); } catch (OutOfScopeException | ProvisionException e) { remotePeer = new Provider<SocketAddress>() { @Override public SocketAddress get() { throw e; } }; } return new IdentifiedUser( authConfig,realm,anonymousCowardName,Providers.of(canonicalUrl.get()),accountCache,groupBackend,disableReversednsLookup,remotePeer,state,realUser); }
@Test public void containsDynamic() throws Exception { DynamicSet<Integer> ds = new DynamicSet<>(); ds.add(2); Key<Integer> key = Key.get(Integer.class); ReloadableRegistrationHandle<Integer> handle = ds.add(key,Providers.of(4)); ds.add(6); // At first,4 is contained. assertthat(ds.contains(4)).isTrue(); //See above comment about ds.contains // Then we remove 4. handle.remove(); // And Now 4 should no longer be contained. assertthat(ds.contains(4)).isFalse(); //See above comment about ds.contains }
@Before public void setUp() throws Exception { Injector injector = Guice.createInjector(new InMemoryModule()); injector.injectMembers(this); lifecycle = new LifecycleManager(); lifecycle.add(injector); lifecycle.start(); db = schemaFactory.open(); schemaCreator.create(db); // Need to create at least one user to be admin before creating a "normal" // registered user. // See AccountManager#create(). accountManager.authenticate(AuthRequest.forUser("admin")).getAccountId(); admins = groupCache.get(new AccountGroup.NameKey("Administrators")).orElse(null).getGroupUUID(); setUpPermissions(); Account.Id userId = accountManager.authenticate(AuthRequest.forUser("user")).getAccountId(); user = userFactory.create(userId); Project.NameKey name = new Project.NameKey("project"); InMemoryRepository inMemoryRepo = repoManager.createRepository(name); project = new ProjectConfig(name); project.load(inMemoryRepo); repo = new TestRepository<>(inMemoryRepo); requestContext.setContext( new RequestContext() { @Override public CurrentUser getUser() { return user; } @Override public Provider<ReviewDb> getReviewDbProvider() { return Providers.of(db); } }); }
@Override public void actionPerformed(final ActionEvent event) { final DCFileChooser fileChooser = new DCFileChooser(_userPreferences.getAnalysisJobDirectory()); final OpenAnalysisJobFileChooserAccessory accessory = new OpenAnalysisJobFileChooserAccessory(_windowContext,_configuration,fileChooser,Providers.of(this)); fileChooser.setAccessory(accessory); fileChooser.addChoosableFileFilter(FileFilters.ANALYSIS_XML); fileChooser.addChoosableFileFilter(FileFilters.ANALYSIS_RESULT_SER); fileChooser.setFileFilter(FileFilters .combined("DataCleaner analysis files",FileFilters.ANALYSIS_XML,FileFilters.ANALYSIS_RESULT_SER)); final int openFileResult = fileChooser.showOpenDialog(_parentwindow.toComponent()); if (openFileResult == JFileChooser.APPROVE_OPTION) { final FileObject file = fileChooser.getSelectedFileObject(); openFile(file); } }
private OpenAnalysisJobAstemplateDialog getDialog() { if (_dialog == null) { try { final WindowContext windowContext = new SimpleWindowContext(); final Datastore datastore = TestHelper.createSampleDatabaseDatastore("orderdb"); final DatastoreCatalog datastoreCatalog = new DatastoreCatalogImpl(datastore); final SimpleDescriptorProvider descriptorProvider = new SimpleDescriptorProvider(); final DataCleanerConfiguration configuration = new DataCleanerConfigurationImpl().withDatastoreCatalog(datastoreCatalog).withEnvironment( new DataCleanerEnvironmentImpl().withDescriptorProvider(descriptorProvider)); final FileObject file = Vfsutils.getFileSystemManager() .resolveFile("src/test/resources/cli-examples/date_analysis_job.xml"); final Provider<OpenAnalysisJobActionListener> providerMock = Providers.of(null); _dialog = new OpenAnalysisJobAstemplateDialog(windowContext,configuration,file,createMetadata(),providerMock); } catch (final filesystemexception e) { logger.error("Problem occurred while creating dialog instance. \n" + e.getMessage()); } } return _dialog; }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module simpleOverrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance(APP_NAME); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(APP_NAME); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(simpleOverrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module simpleOverrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance(APP_NAME); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(APP_NAME); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(simpleOverrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module simpleOverrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance(APP_NAME); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(APP_NAME); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(simpleOverrides); }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module overrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance(APP_NAME); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(APP_NAME); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(overrides); }
@SuppressWarnings("unchecked") public void testMixedTargetsFails() { try { Guice.createInjector( new SimpleModule(foo,pFoo,pclFoo,clFoo,cFoo),new SimpleModule(new FooImpl(),Providers.<Foo>of(new FooImpl()),(Class)BarProvider.class,(Class)Bar.class,(Constructor)Bar.cxtor()) ); fail("expected exception"); } catch(CreationException ce) { assertContains(ce.getMessage(),"A binding to " + Foo.class.getName() + " annotated with " + named("pInstance") + " was already configured at " + SimpleModule.class.getName(),"at " + SimpleModule.class.getName(),"A binding to " + Foo.class.getName() + " annotated with " + named("pKey") + " was already configured at " + SimpleModule.class.getName(),"A binding to " + Foo.class.getName() + " annotated with " + named("linkedKey") + " was already configured at " + SimpleModule.class.getName(),"A binding to " + Foo.class.getName() + " annotated with " + named("constructor") + " was already configured at " + SimpleModule.class.getName(),"at " + SimpleModule.class.getName()); } }
@Override protected Module newIsisWicketModule() { final Module isisDefaults = super.newIsisWicketModule(); final Module simpleOverrides = new AbstractModule() { @Override protected void configure() { bind(String.class).annotatedWith(Names.named("applicationName")).toInstance(APP_NAME); bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css"); bind(String.class).annotatedWith(Names.named("applicationjs")).toInstance("scripts/application.js"); bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(),"welcome.html")); bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(APP_NAME); bind(InputStream.class).annotatedWith(Names.named("MetaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsstream("/meta-inf/MANIFEST.MF"))); } }; return Modules.override(isisDefaults).with(simpleOverrides); }
public void testFieldBoundAsProvider_lazy() { LazyProviderClass asProvider = new LazyProviderClass(); Provider<Integer> provider = Guice.createInjector(BoundFieldModule.of(asProvider)).getProvider(Integer.class); assertNull(provider.get()); asProvider.foo = Providers.of(1); assertEquals(1,provider.get().intValue()); asProvider.foo = new Provider<Integer>() { @Override public Integer get() { throw new RuntimeException("boom"); } }; try { provider.get(); fail(); } catch (ProvisionException e) { assertContains(e.getMessage(),"boom"); } }
private Injector createInjector(Module... modules) throws CreationException { return Guice.createInjector( Lists.<Module>asList( new AbstractModule() { @Override protected void configure() { install(new ServletModule()); bind(InSession.class); bind(IN_SESSION_NULL_KEY) .toProvider(Providers.<InSession>of(null)) .in(SessionScoped.class); bind(InRequest.class); bind(IN_REQUEST_NULL_KEY) .toProvider(Providers.<InRequest>of(null)) .in(RequestScoped.class); } },modules)); }
ConvertedConstantBindingImpl( InjectorImpl injector,Key<T> key,T value,Binding<String> originalBinding,TypeConverterBinding typeConverterBinding) { super( injector,key,originalBinding.getSource(),new ConstantFactory<T>(Initializables.of(value)),scoping.UNScopED); this.value = value; provider = Providers.of(value); this.originalBinding = originalBinding; this.typeConverterBinding = typeConverterBinding; }
public void testGuicify330Provider() { Provider<String> jsr330Provider = new Provider<String>() { @Override public String get() { return "A"; } @Override public String toString() { return "jsr330Provider"; } }; com.google.inject.Provider<String> guicified = Providers.guicify(jsr330Provider); assertEquals("guicified(jsr330Provider)",guicified.toString()); assertEquals("A",guicified.get()); // when you guicify the Guice-friendly,it's a no-op assertSame(guicified,Providers.guicify(guicified)); assertFalse(guicified instanceof HasDependencies); }
public void testBindToInjectorWithListeningGivesSaneException() { try { Guice.createInjector( new AbstractModule() { @Override protected void configure() { bindListener(Matchers.any(),new Counter()); bind(Injector.class).toProvider(Providers.<Injector>of(null)); } }); fail(); } catch (CreationException ce) { assertContains( ce.getMessage(),"Binding to core guice framework type is not allowed: Injector."); } }
public void testBindingToProvider() { try { Guice.createInjector( new AbstractModule() { @Override protected void configure() { bind(new TypeLiteral<Provider<String>>() {}).toInstance(Providers.of("A")); } }); fail(); } catch (CreationException expected) { assertContains( expected.getMessage(),"1) Binding to Provider is not allowed.","at " + BinderTest.class.getName(),getDeclaringSourcePart(getClass())); } }
今天关于Button按钮--inject与provide和button 按钮的分享就到这里,希望大家有所收获,若想了解更多关于Angular $ injector可以用$ provide.decorator装饰吗?、angularjs – 错误:[$injector:unpr]未知的提供者:$routeProvider、com.google.inject.throwingproviders.CheckedProvider的实例源码、com.google.inject.util.Providers的实例源码等相关知识,可以在本站进行查询。
本文标签: