Skip to content
This repository has been archived by the owner on Apr 20, 2021. It is now read-only.

Feature/performance #23

Merged
merged 6 commits into from
Jul 27, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package com.pascalwelsch.compositeandroid.core;

import android.support.annotation.NonNull;

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.concurrent.CopyOnWriteArrayList;

/**
Expand All @@ -25,6 +21,7 @@ public AbstractDelegate(final T original) {
public Removable addPlugin(final P plugin) {
plugin.addToDelegate(this, mOriginal);
mPlugins.add(plugin);

return new Removable() {
@Override
public void remove() {
Expand All @@ -38,65 +35,4 @@ public T getOriginal() {
return mOriginal;
}

@NonNull
protected <R> R callFunction(final String methodName,
final PluginCall<P, R> methodCall, final SuperCall<R> activitySuper,
final Object... args) {

final LinkedList<P> plugins = new LinkedList<>(mPlugins);

final ListIterator<P> iterator = plugins.listIterator(plugins.size());
return callFunction(iterator, methodName, methodCall, activitySuper, args);
}

@NonNull
protected <R> R callFunction(final ListIterator<P> iterator,
final String methodName,
final PluginCall<P, R> methodCall, final SuperCall<R> activitySuper,
final Object... args) {

if (iterator.hasPrevious()) {
P plugin = iterator.previous();
final NamedSuperCall<R> listener = new NamedSuperCall<R>(methodName) {
@Override
public R call(final Object... args) {
return callFunction(iterator, methodName, methodCall, activitySuper, args);
}
};
final R result = methodCall.call(listener, plugin, args);
return result;

} else {
return activitySuper.call(args);
}
}

protected void callHook(final String methodName,
final PluginCallVoid methodCall, final SuperCallVoid activitySuper,
final Object... args) {

final LinkedList<P> plugins = new LinkedList<>(mPlugins);

final ListIterator<P> iterator = plugins.listIterator(plugins.size());
callHook(iterator, methodName, methodCall, activitySuper, args);
}

void callHook(final ListIterator<P> iterator, final String methodName,
final PluginCallVoid methodCall, final SuperCallVoid activitySuper,
final Object... args) {

if (iterator.hasPrevious()) {
final P plugin = iterator.previous();
final NamedSuperCall<Void> listener = new NamedSuperCall<Void>(methodName) {
@Override
public Void call(final Object... args) {
callHook(iterator, methodName, methodCall, activitySuper, args);
return null;
}
};
methodCall.call(listener, plugin, args);
} else {
activitySuper.call(args);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

public class AbstractPlugin<T, D> {

final public Stack<NamedSuperCall<?>> mSuperListeners = new Stack<>();
final public Stack<NamedSuperCall> mSuperListeners = new Stack<>();

private D mDelegate;

Expand Down Expand Up @@ -39,7 +39,7 @@ public void verifyMethodCalledFromDelegate(final String method) {
final String superListener = mSuperListeners.peek().getMethodName();
if (!superListener.equals(method)) {
throw new IllegalStateException("You may have called "
+ method + " from " + superListener + " instead of calling getActivity()."
+ method + " from " + superListener + " instead of calling getOriginal()."
+ method + ". Do not call " + method
+ " on a ActivityPlugin directly. You have to call mDelegate." + method
+ " or the call order of the plugins would be mixed up.");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun0<R> extends NamedSuperCall {

public CallFun0(final String methodName) {
super(methodName);
}

public abstract R call();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun1<R, T1> extends NamedSuperCall {

public CallFun1(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun2<R, T1, T2> extends NamedSuperCall {

public CallFun2(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun3<R, T1, T2, T3> extends NamedSuperCall {

public CallFun3(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun4<R, T1, T2, T3, T4> extends NamedSuperCall {

public CallFun4(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3, final T4 p4);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun5<R, T1, T2, T3, T4, T5> extends NamedSuperCall {

public CallFun5(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun6<R, T1, T2, T3, T4, T5, T6> extends NamedSuperCall {

public CallFun6(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun7<R, T1, T2, T3, T4, T5, T6, T7> extends NamedSuperCall {

public CallFun7(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6, T7 p7);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun8<R, T1, T2, T3, T4, T5, T6, T7, T8> extends NamedSuperCall {

public CallFun8(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6, T7 p7,
T8 p8);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallFun9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> extends NamedSuperCall {

public CallFun9(final String methodName) {
super(methodName);
}

public abstract R call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6, T7 p7,
T8 p8, T9 p9);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid0 extends NamedSuperCall {

public CallVoid0(final String methodName) {
super(methodName);
}

public abstract void call();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid1<T1> extends NamedSuperCall {

public CallVoid1(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid2<T1, T2> extends NamedSuperCall {

public CallVoid2(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid3<T1, T2, T3> extends NamedSuperCall {

public CallVoid3(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid4<T1, T2, T3, T4> extends NamedSuperCall {

public CallVoid4(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3, final T4 p4);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid5<T1, T2, T3, T4, T5> extends NamedSuperCall {

public CallVoid5(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid6<T1, T2, T3, T4, T5, T6> extends NamedSuperCall {

public CallVoid6(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid7<T1, T2, T3, T4, T5, T6, T7> extends NamedSuperCall {

public CallVoid7(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6,
T7 p7);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid8<T1, T2, T3, T4, T5, T6, T7, T8> extends NamedSuperCall {

public CallVoid8(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6,
T7 p7, T8 p8);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class CallVoid9<T1, T2, T3, T4, T5, T6, T7, T8, T9> extends NamedSuperCall {

public CallVoid9(final String methodName) {
super(methodName);
}

public abstract void call(final T1 p1, final T2 p2, final T3 p3, final T4 p4, T5 p5, T6 p6,
T7 p7, T8 p8, T9 p9);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class NamedSuperCall<R> implements SuperCall<R> {
public abstract class NamedSuperCall {

private final String mMethodName;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.pascalwelsch.compositeandroid.core;

public abstract class NamedSuperCallVoid implements SuperCall {

private final String mMethodName;

public NamedSuperCallVoid(final String methodName) {
mMethodName = methodName;
}

public String getMethodName() {
return mMethodName;
}
}

This file was deleted.

This file was deleted.

Loading