inkycode / nexus

A tiny service framework for Java.
0 stars 0 forks source link

Nexus Build Status Download

A tiny service framework for Java.

Simple services

interface HelloWorldService {

    void sayHello();

}

/* ... */

@Service
public class HelloWorldServiceImpl implements HelloWorldService {

    @Override
    public void sayHello() {
        System.out.println("Hello World!");
    }

}

/* ... */

public static void main(String[] args) {
    Framework.getInstance().start();

    Framework.getInstance().getService(HelloWorldService.class).sayHello();
}

Service injection

interface CommandService {

    void run();

}

/* ... */

@Service
public class CommandServiceImpl implements CommandService {

    @Inject
    private HelloWorldService helloWorldService;

    @Override
    public void run() {
        helloWorldService.sayHello();
        helloWorldService.sayHello();
    }

}

/* ... */

public static void main(String[] args) {
    Framework.getInstance().start();

    Framework.getInstance().getService(CommandService.class).run();
}

Service factories

interface GreeterService {

    void greet(Class<? extends GreetingService> greeting);

}

/* ... */

interface GreeterService {

    String getGreeting();

}

/* ... */

@Service
public class EnglishGreeting implements GreetingService {

    @Override
    public String getGreeting() {
        return "Hello, kind sir.";
    }

}

/* ... */

@Service
public class FrenchGreeting implements GreetingService {

    @Override
    public String getGreeting() {
        return "bonjour.";
    };

}

/* ... */

@Service
public class GreeterServiceImpl implements GreeterService {

    private final Map<Class<? extends GreetingService>, GreetingService> greetings = new HashMap<Class<? extends GreetingService>, GreetingService>();

    @Override
    public void greet(Class<? extends GreetingService> greeting) {
        if (this.greetings.containsKey(greeter)) {
            System.out.println(this.greetings.get(greeter).getGreeting());
        }
    }

    @Inject
    public void addGreeting(final GreetingService greeting) {
        this.greetings.put(greeting.getClass(), greeting);
    }

}

/* ... */

public static void main(String[] args) {
    Framework.getInstance().start();

    final GreeterService greeter = Framework.getInstance().getService(GreeterService.class);
    greeter.greet(EnglishGreeting.class);
    greeter.greet(FrenchGreeting.class);
}