sPFLib/src/main/java/it/polimi/spf/lib/services/ServiceValidator.java
static void validateInterface(Class<?> serviceInterface, int validationType) {
		// Verify serviceInterface is an interface.
		assertThat(serviceInterface.isInterface(), ErrorMsg.INTERFACE_REQUIRED);

		// Verify serviceInterface has the right annotation.
		ServiceInterface service = serviceInterface.getAnnotation(ServiceInterface.class);
		assertThat(service != null, ErrorMsg.MISSING_ANNOTATION);

		// Verify service name is not empty
		assertThat(!isStringEmpty(service.name()), ErrorMsg.MISSING_SERVICE_NAME);

		// Verify service app name is not empty for remote services
		assertThat(!(validationType == TYPE_REMOTE && isStringEmpty(service.app())), ErrorMsg.MISSING_APP_NAME);

		// Analyze methods
		for (Method m : serviceInterface.getMethods()) {
			if (m.isAnnotationPresent(ActivityConsumer.class)) {
				validateActivityConsumer(service.name(), m);
			} else {
				validateStandardMethod(service.name(), m);
			}
		}
	}
static void validateInterface(Class<?> serviceInterface, int validationType) {
		// Verify serviceInterface is an interface.
		assertThat(serviceInterface.isInterface(), ErrorMsg.INTERFACE_REQUIRED);

		// Verify serviceInterface has the right annotation.
		ServiceInterface service = serviceInterface.getAnnotation(ServiceInterface.class);
		assertThat(service != null, ErrorMsg.MISSING_ANNOTATION);

		// Verify service name is not empty
		assertThat(!isStringEmpty(service.name()), ErrorMsg.MISSING_SERVICE_NAME);

		// Verify service app name is not empty for remote services
		assertThat(!(validationType == TYPE_REMOTE && isStringEmpty(service.app())), ErrorMsg.MISSING_APP_NAME);

		// Analyze methods
		for (Method m : serviceInterface.getMethods()) {
			if (m.isAnnotationPresent(ActivityConsumer.class)) {
				validateActivityConsumer(service.name(), m);
			} else {
				validateStandardMethod(service.name(), m);
			}
		}
	}
Validates the interface of a service. In case of failed validation, an
unchecked {@link IllegalServiceException} is thrown.

To be valid, a service interface must comply with a series of
constraints:
<ul>
<li>Being annotated with a complete {@link ServiceInterface} annotation;</li>
<li>Having all methods with supported return type;</li>
<li>Having all methods with parameters whose type is supported</li>
<li>Having all methods throwing {@link ServiceInvocationException}</li>
</ul>

Supported types includes only native Java types.

@param serviceInterface
- the interface to be validated;
@param validationType
- the validation to be performed, either
<code>TYPE_PUBLISHED</code> or <code>TYPE_REMOTE</code>