Skip to content

Commit

Permalink
Rename RxJavaSchedulers to RxJavaDefaultSchedulers
Browse files Browse the repository at this point in the history
Clearer semantic naming.
  • Loading branch information
benjchristensen committed Feb 19, 2014
1 parent d07d936 commit 9178d14
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,20 @@
* See {@link RxJavaPlugins} or the RxJava GitHub Wiki for information on configuring plugins: <a
* href="https://github.com/Netflix/RxJava/wiki/Plugins">https://github.com/Netflix/RxJava/wiki/Plugins</a>.
*/
public abstract class RxJavaSchedulers {
public abstract class RxJavaDefaultSchedulers {

/**
* Factory of Scheduler to return from {@link Schedulers.computation()} or null if default should be used.
*/
public abstract Func0<Scheduler> getComputationScheduler();
public abstract Func0<Scheduler> getComputationSchedulerFactory();

/**
* Factory of Scheduler to return from {@link Schedulers.io()} or null if default should be used.
*/
public abstract Func0<Scheduler> getIOScheduler();
public abstract Func0<Scheduler> getIOSchedulerFactory();

/**
* Factory of Scheduler to return from {@link Schedulers.newThread()} or null if default should be used.
*/
public abstract Func0<Scheduler> getNewThreadScheduler();
public abstract Func0<Scheduler> getNewThreadSchedulerFactory();
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,23 @@
*
* @ExcludeFromJavadoc
*/
public class RxJavaSchedulersDefault extends RxJavaSchedulers {
public class RxJavaDefaultSchedulersDefault extends RxJavaDefaultSchedulers {

private static RxJavaSchedulersDefault INSTANCE = new RxJavaSchedulersDefault();
private static RxJavaDefaultSchedulersDefault INSTANCE = new RxJavaDefaultSchedulersDefault();

public Func0<Scheduler> getComputationScheduler() {
public Func0<Scheduler> getComputationSchedulerFactory() {
return null;
}

public Func0<Scheduler> getIOScheduler() {
public Func0<Scheduler> getIOSchedulerFactory() {
return null;
}

public Func0<Scheduler> getNewThreadScheduler() {
public Func0<Scheduler> getNewThreadSchedulerFactory() {
return null;
}

public static RxJavaSchedulers getInstance() {
public static RxJavaDefaultSchedulers getInstance() {
return INSTANCE;
}

Expand Down
20 changes: 10 additions & 10 deletions rxjava-core/src/main/java/rx/plugins/RxJavaPlugins.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class RxJavaPlugins {

private final AtomicReference<RxJavaErrorHandler> errorHandler = new AtomicReference<RxJavaErrorHandler>();
private final AtomicReference<RxJavaObservableExecutionHook> observableExecutionHook = new AtomicReference<RxJavaObservableExecutionHook>();
private final AtomicReference<RxJavaSchedulers> schedulerOverrides = new AtomicReference<RxJavaSchedulers>();
private final AtomicReference<RxJavaDefaultSchedulers> schedulerOverrides = new AtomicReference<RxJavaDefaultSchedulers>();

public static RxJavaPlugins getInstance() {
return INSTANCE;
Expand Down Expand Up @@ -152,39 +152,39 @@ private static Object getPluginImplementationViaProperty(Class<?> pluginClass) {
}

/**
* Retrieve instance of {@link RxJavaSchedulers} to use based on order of precedence as defined in {@link RxJavaPlugins} class header.
* Retrieve instance of {@link RxJavaDefaultSchedulers} to use based on order of precedence as defined in {@link RxJavaPlugins} class header.
* <p>
* Override default by using {@link #registerSchedulers(RxJavaSchedulers)} or setting property: <code>rxjava.plugin.RxJavaDefaultSchedulers.implementation</code> with the full
* Override default by using {@link #registerDefaultSchedulers(RxJavaDefaultSchedulers)} or setting property: <code>rxjava.plugin.RxJavaDefaultSchedulers.implementation</code> with the full
* classname to
* load.
*
* @return {@link RxJavaErrorHandler} implementation to use
*/
public RxJavaSchedulers getSchedulers() {
public RxJavaDefaultSchedulers getDefaultSchedulers() {
if (schedulerOverrides.get() == null) {
// check for an implementation from System.getProperty first
Object impl = getPluginImplementationViaProperty(RxJavaSchedulers.class);
Object impl = getPluginImplementationViaProperty(RxJavaDefaultSchedulers.class);
if (impl == null) {
// nothing set via properties so initialize with default
schedulerOverrides.compareAndSet(null, RxJavaSchedulersDefault.getInstance());
schedulerOverrides.compareAndSet(null, RxJavaDefaultSchedulersDefault.getInstance());
// we don't return from here but call get() again in case of thread-race so the winner will always get returned
} else {
// we received an implementation from the system property so use it
schedulerOverrides.compareAndSet(null, (RxJavaSchedulers) impl);
schedulerOverrides.compareAndSet(null, (RxJavaDefaultSchedulers) impl);
}
}
return schedulerOverrides.get();
}

/**
* Register a {@link RxJavaSchedulers} implementation as a global override of any injected or default implementations.
* Register a {@link RxJavaDefaultSchedulers} implementation as a global override of any injected or default implementations.
*
* @param impl
* {@link RxJavaSchedulers} implementation
* {@link RxJavaDefaultSchedulers} implementation
* @throws IllegalStateException
* if called more than once or after the default was initialized (if usage occurs before trying to register)
*/
public void registerSchedulers(RxJavaSchedulers impl) {
public void registerDefaultSchedulers(RxJavaDefaultSchedulers impl) {
if (!schedulerOverrides.compareAndSet(null, impl)) {
throw new IllegalStateException("Another strategy was already registered: " + schedulerOverrides.get());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,14 @@ public Thread newThread(Runnable r) {
}
};

@Deprecated
public static NewThreadScheduler getInstance() {
return INSTANCE;
}

/* package */ static NewThreadScheduler instance() {
return INSTANCE;
}

private NewThreadScheduler() {

Expand Down
8 changes: 4 additions & 4 deletions rxjava-core/src/main/java/rx/schedulers/Schedulers.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class Schedulers {
private static final Schedulers INSTANCE = new Schedulers();

private Schedulers() {
Func0<Scheduler> c = RxJavaPlugins.getInstance().getSchedulers().getComputationScheduler();
Func0<Scheduler> c = RxJavaPlugins.getInstance().getDefaultSchedulers().getComputationSchedulerFactory();
if (c != null) {
computationScheduler = c;
} else {
Expand All @@ -52,7 +52,7 @@ public Scheduler call() {
};
}

Func0<Scheduler> io = RxJavaPlugins.getInstance().getSchedulers().getIOScheduler();
Func0<Scheduler> io = RxJavaPlugins.getInstance().getDefaultSchedulers().getIOSchedulerFactory();
if (io != null) {
ioScheduler = io;
} else {
Expand All @@ -66,15 +66,15 @@ public Scheduler call() {
};
}

Func0<Scheduler> nt = RxJavaPlugins.getInstance().getSchedulers().getNewThreadScheduler();
Func0<Scheduler> nt = RxJavaPlugins.getInstance().getDefaultSchedulers().getNewThreadSchedulerFactory();
if (nt != null) {
newThreadScheduler = nt;
} else {
newThreadScheduler = new Func0<Scheduler>() {

@Override
public Scheduler call() {
return NewThreadScheduler.getInstance();
return NewThreadScheduler.instance();
}

};
Expand Down

0 comments on commit 9178d14

Please sign in to comment.