Coordinator compiler

Avoid flags! Coordinate threads and launch a completed action when done

License

License

GroupId

GroupId

me.panavtec
ArtifactId

ArtifactId

coordinator-compiler
Last Version

Last Version

1.1.5
Release Date

Release Date

Type

Type

jar
Description

Description

Coordinator compiler
Avoid flags! Coordinate threads and launch a completed action when done
Project URL

Project URL

https://github.com/PaNaVTEC/Coordinator-java
Source Code Management

Source Code Management

https://github.com/PaNaVTEC/Coordinator-java

Download coordinator-compiler

How to add to project

<!-- https://jarcasting.com/artifacts/me.panavtec/coordinator-compiler/ -->
<dependency>
    <groupId>me.panavtec</groupId>
    <artifactId>coordinator-compiler</artifactId>
    <version>1.1.5</version>
</dependency>
// https://jarcasting.com/artifacts/me.panavtec/coordinator-compiler/
implementation 'me.panavtec:coordinator-compiler:1.1.5'
// https://jarcasting.com/artifacts/me.panavtec/coordinator-compiler/
implementation ("me.panavtec:coordinator-compiler:1.1.5")
'me.panavtec:coordinator-compiler:jar:1.1.5'
<dependency org="me.panavtec" name="coordinator-compiler" rev="1.1.5">
  <artifact name="coordinator-compiler" type="jar" />
</dependency>
@Grapes(
@Grab(group='me.panavtec', module='coordinator-compiler', version='1.1.5')
)
libraryDependencies += "me.panavtec" % "coordinator-compiler" % "1.1.5"
[me.panavtec/coordinator-compiler "1.1.5"]

Dependencies

compile (2)

Group / Artifact Type Version
me.panavtec : coordinator-common jar 1.1.5
com.squareup : javapoet jar 1.0.0

test (2)

Group / Artifact Type Version
org.mockito : mockito-all jar 2.0.2-beta
junit : junit jar 4.6

Project Modules

There are no modules declared in this project.

#Coordinator Android Arsenal Maven Central

Coordinator is a Java library that is used to coordinate various asynchronous actions. Usually we found cases that you need to check if other thread is completed to execute an action, coordinator solves this problem without using flags.

Logo

##Importing to your project Add this dependency to your build.gradle file:

dependencies {
    compile 'me.panavtec:coordinator:{Lib version, see the mvn central badge}'
    provided 'me.panavtec:coordinator-compiler:{Lib version, see the mvn central badge}'
}

##Basic usage

Coordinator can be used with dependency injection and without. Basically it needs a CompletedAction and a set of actions to work. The completedAction is a Runnable that runs autommatically when all cations are complete. The list of actions are just integers and are used as ids to let know coordinator what actions are completed.

With Annotations:

@Actions({ AN_ACTION, ANOTHER_ACTION }) Coordinator coordinator;
@CoordinatorComplete Runnable coordinatorComplete;

public Constructor() {
	Coordinator.inject(this);
}

public void someAsyncMethod() {
	coordinator.completeAction(AN_ACTION);
}

public void someAsyncMethod2() {
	coordinator.completeAction(ANOTHER_ACTION);
}

And coordinator autommatically runs the runnable when the 2 actions are complete. We can annotate methods instead of having Runnable members in your class:

@CoordinatorComplete public void someAsyncMethod() {
}

Do you need some special action when and actions is triggered? Here is how to do it:

@CoordinatedAction(action = AN_ACTION) Runnable completeAction;

With this, the "completeAction" runnable is called when you call "coordinator.completeAction". Also you can annotate a method instead a class member.

Need more than 1 coordinator for a class? No problem! Just set a Id to coordinator and actions:

@Actions(coordinatorId = 2, value = { AN_ACTION, ANOTHER_ACTION }) Coordinator coordinator;
@CoordinatorComplete(coordinatorId = 2) Runnable coordinatorComplete;

Don't like annotations? Don't worry! You can instantiate Coordinator manually:

new Coordinator(new Runnable() {
	@Override public void run() {
		launchMyAwesomeAction();
	}
}, AN_ACTION, ANOTHER_ACTION);

Developed by

Christian Panadero Martinez - http://panavtec.me - @PaNaVTEC

License

Copyright 2015 Christian Panadero Martinez

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Versions

Version
1.1.5
1.1.1
1.1.0
1.0.0