All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.asayama.gwt.angular.client.Provide Maven / Gradle / Ivy

package com.asayama.gwt.angular.client;

import com.asayama.gwt.angular.client.Angular.Bind;
import com.asayama.gwt.jsni.client.Closure;
import com.asayama.gwt.jsni.client.Function;
import com.asayama.gwt.jsni.client.JSClosure;
import com.asayama.gwt.jsni.client.JSFunction;

/**
 * Provide registers {@link Provider} with {@link Injector}.
 * 

* http://docs.angularjs.org/api/auto/object/$provide *

* The documentation talks about many of these methods returning "registered * provider instance" but I do not know what that means. It seems that services * are instances of objects created by providers, and the providers appear to * be functions that return service instances, but I cannot figure out what * provider instance is. Could it be provider function? * * @author kyoken74 * @see AbstractModule */ public class Provide implements Service { NGProvide ngo; public void provider(String name, Function provider) { ngo.provider(name, JSFunction.create(provider)); } public void factory(String name, Function $getFn) { ngo.factory(name, JSFunction.create($getFn)); } public void service(String name, Closure constructor) { ngo.service(name, JSClosure.create(constructor)); } public void value(String name, Object value) { ngo.value(name, value); } public void constant(String name, Object value) { ngo.constant(name, value); } /** * @return decorated service? */ public S decorator(String name, Function decorator) { return ngo.decorator(name, JSFunction.create(decorator)); } } @Bind("$provide") class NGProvide extends NGObject { protected NGProvide() { } /** * @return registered provider instance? */ final native Object provider(String name, JSFunction provider) /*-{ return this.provider(name, provider); }-*/; /** * @return registered provider instance? */ final native Object factory(String name, JSFunction $getFn) /*-{ return this.provider(name, { $get: $getFn }); }-*/; /** * @return registered provider instance? */ final native Object service(String name, JSClosure constructor) /*-{ return this.service(name, constructor); }-*/; /** * @return registered provider instance? */ final native Object value(String name, Object value) /*-{ return this.value(name, value); }-*/; /** * @return registered provider instance? */ final native Object constant(String name, Object value) /*-{ return this.constant(name, value); }-*/; /** * @return decorated service? */ final native S decorator(String name, JSFunction decorator) /*-{ return this.decorator(name, decorator); }-*/; }