+/**
+ * Value provider that provides a value through a required interface.
+ *
+ * @author Erik Brakkee
+ */
+class RequiredInterfaceProvider implements ValueProvider {
+ /**
+ * DOCUMENT ME!
+ */
+ private RequiredInterface required;
+
+/**
+ * Constructs the provider
+ * @param aRequired Required interface.
+ */
+ public RequiredInterfaceProvider(RequiredInterface aRequired) {
+ required = aRequired;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aScope DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ @Override
+ public Object getValue(Scope aScope) {
+ return aScope.getInterfaceImplementation(required.getProvider(),
+ Object.class);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public RequiredInterface getRequiredInterface() {
+ return required;
+ }