// Path: java-modules-context-boot/src/main/java/io/github/tomdw/java/modules/context/boot/api/ModuleServiceProvider.java
// public class ModuleServiceProvider {
// 
// 	public static <SERVICETYPE> SERVICETYPE provide(Class<SERVICETYPE> servicetypeClass) {
// 		return ModuleContextRegistry.retrieveInstanceFromContext(servicetypeClass);
// 	}
// 
// 	public static <SERVICETYPE> SERVICETYPE provide(Class<SERVICETYPE> servicetypeClass, String serviceName) {
// 		return ModuleContextRegistry.retrieveInstanceFromContext(servicetypeClass, serviceName);
// 	}
// }
// 
// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/api/FailingSpeakerService.java
// public interface FailingSpeakerService {
// 
// 	String getSpeakerNameButThrowsRuntimeException();
// 
// 	String getSpeakerNameButThrowsCheckedException() throws NoSpeakerCheckedException;
// }
// 
// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/api/NoSpeakerCheckedException.java
// public class NoSpeakerCheckedException extends Exception {
// }
// 
// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/api/NoSpeakerRuntimeException.java
// public class NoSpeakerRuntimeException extends RuntimeException {
// }


import javax.inject.Named;
import io.github.tomdw.java.modules.context.boot.api.ModuleServiceProvider;
import io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.api.FailingSpeakerService;
import io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.api.NoSpeakerCheckedException;
import io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.api.NoSpeakerRuntimeException;
package io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.internal;



@Named
public class DefaultFailingSpeakerService implements FailingSpeakerService {

	public static FailingSpeakerService provider() {
		return provideByInterfaceSoThatADynamicProxyWillBeCreatedWhichShouldNotWrapExceptions();
	}

	private static FailingSpeakerService provideByInterfaceSoThatADynamicProxyWillBeCreatedWhichShouldNotWrapExceptions() {
		return ModuleServiceProvider.provide(FailingSpeakerService.class);
	}

	@Override
	public String getSpeakerNameButThrowsRuntimeException() {
		throw new NoSpeakerRuntimeException();
	}

	@Override
	public String getSpeakerNameButThrowsCheckedException() throws NoSpeakerCheckedException {
// Path: java-modules-context-boot/src/main/java/io/github/tomdw/java/modules/context/boot/api/ModuleServiceProvider.java
// public class ModuleServiceProvider {
// 
// 	public static <SERVICETYPE> SERVICETYPE provide(Class<SERVICETYPE> servicetypeClass) {
// 		return ModuleContextRegistry.retrieveInstanceFromContext(servicetypeClass);
// 	}
// 
// 	public static <SERVICETYPE> SERVICETYPE provide(Class<SERVICETYPE> servicetypeClass, String serviceName) {
// 		return ModuleContextRegistry.retrieveInstanceFromContext(servicetypeClass, serviceName);
// 	}
// }
// 
// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/api/FailingSpeakerService.java
// public interface FailingSpeakerService {
// 
// 	String getSpeakerNameButThrowsRuntimeException();
// 
// 	String getSpeakerNameButThrowsCheckedException() throws NoSpeakerCheckedException;
// }
// 
// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/api/NoSpeakerCheckedException.java
// public class NoSpeakerCheckedException extends Exception {
// }
// 
// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/api/NoSpeakerRuntimeException.java
// public class NoSpeakerRuntimeException extends RuntimeException {
// }


// Path: samples/basicapplication/speaker/src/main/java/io/github/tomdw/java/modules/spring/samples/basicapplication/speaker/internal/DefaultFailingSpeakerService.java
import javax.inject.Named;
import io.github.tomdw.java.modules.context.boot.api.ModuleServiceProvider;
import io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.api.FailingSpeakerService;
import io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.api.NoSpeakerCheckedException;
import io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.api.NoSpeakerRuntimeException;

package io.github.tomdw.java.modules.spring.samples.basicapplication.speaker.internal;



@Named
public class DefaultFailingSpeakerService implements FailingSpeakerService {

	public static FailingSpeakerService provider() {
		return provideByInterfaceSoThatADynamicProxyWillBeCreatedWhichShouldNotWrapExceptions();
	}

	private static FailingSpeakerService provideByInterfaceSoThatADynamicProxyWillBeCreatedWhichShouldNotWrapExceptions() {
		return ModuleServiceProvider.provide(FailingSpeakerService.class);
	}

	@Override
	public String getSpeakerNameButThrowsRuntimeException() {
		throw new NoSpeakerRuntimeException();
	}

	@Override
	public String getSpeakerNameButThrowsCheckedException() throws NoSpeakerCheckedException {
		throw new NoSpeakerCheckedException();