public class DefaultRequiredInterface implements RequiredInterface {
private String _name;
+ private boolean _optional;
private Class[] _required;
private ProvidedInterface _provider;
}
public DefaultRequiredInterface(String aName, Class[] aInterfaces) {
+ this(aName, aInterfaces, false);
+ }
+
+ public DefaultRequiredInterface(String aName, Class aInterface, boolean aIsOptional) {
+ this(aName, new Class[] { aInterface }, aIsOptional );
+ }
+
+
+ public DefaultRequiredInterface(String aName, Class[] aInterfaces, boolean aIsOptional) {
_name = aName;
+ _optional = aIsOptional;
_required = aInterfaces;
}
return _name;
}
+ @Override
+ public boolean isOptional() {
+ return _optional;
+ }
+
@Override
public boolean implementedBy(ProvidedInterface aDescriptor) {
Class[] provided = aDescriptor.getInterfaceTypes();
@Override
public void setProvider(ProvidedInterface aProvider) {
+ assert aProvider != null;
+ assert implementedBy(aProvider);
_provider = aProvider;
}
-
- @Override
- public <T> T getImplementation(Class<T> aClass) {
- if ( _provider == null ) {
- return null;
- }
- return (T)_provider.getImplementation();
- }
@Override
public boolean equals(Object obj) {
@Override
public String toString() {
StringBuffer buf = new StringBuffer();
+ buf.append("." + getName() + ":");
for (Class intf: _required) {
buf.append("." + intf.getName());
}