X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fadapters%2FClassConfiguration.java;h=1c8760bb8ae77fd08c54bfbdbb433b6ef4c72693;hb=ddd261f331280640c5b53c7128230b629ebcd268;hp=3756bd3b7923fa52c00af73b3ebcfc97c0f27f94;hpb=7273d083a2f03cd3d2061d3c6628a46b679e718b;p=utils
diff --git a/system/general/src/main/java/org/wamblee/system/adapters/ClassConfiguration.java b/system/general/src/main/java/org/wamblee/system/adapters/ClassConfiguration.java
index 3756bd3b..1c8760bb 100644
--- a/system/general/src/main/java/org/wamblee/system/adapters/ClassConfiguration.java
+++ b/system/general/src/main/java/org/wamblee/system/adapters/ClassConfiguration.java
@@ -1,12 +1,12 @@
/*
* Copyright 2008 the original author or authors.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,74 +15,110 @@
*/
package org.wamblee.system.adapters;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.wamblee.collections.CollectionFilter;
-import org.wamblee.conditions.Condition;
import org.wamblee.system.core.DefaultProvidedInterface;
-import org.wamblee.system.core.DefaultRequiredInterface;
import org.wamblee.system.core.ProvidedInterface;
import org.wamblee.system.core.RequiredInterface;
import org.wamblee.system.core.Scope;
-import org.wamblee.system.core.SystemAssemblyException;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
- * The class configuration encapsulates the knowledge of how to wrap a class as a component.
- * In particular, it provides:
- *
- * - Selection of a constructor using explicit selection
- * {@link #select(Class...)} or using the most greedy constructor
- * {@link #greedy()}.
- *
- * -
- * Selection of methods to invoke to inject other objects into the object.
- *
- * - Selection of fields to set.
- *
- *
- *
- * @author Erik Brakkee
+ * The class configuration encapsulates the knowledge of how to wrap a
+ * class as a component.
*
+ * @author Erik Brakkee
*/
public class ClassConfiguration {
+ /**
+ * DOCUMENT ME!
+ */
+ private Class _class;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private ConstructorConfiguration constructorConfig;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private ObjectConfiguration objectConfig;
+
+/**
+ * Constructs the configuration. By default no constructor is selected and
+ * one of {@link #select(Class...)} or
+ * {@link #greedy()} must be called.
+ * @param aClass Class to construct.
+ */
+ public ClassConfiguration(Class aClass) {
+ _class = aClass;
+ constructorConfig = new ConstructorConfiguration(aClass);
+ objectConfig = new ObjectConfiguration(aClass);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public ConstructorConfiguration getConstructorConfig() {
+ return constructorConfig;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public ObjectConfiguration getObjectConfig() {
+ return objectConfig;
+ }
+
+ /**
+ * Creates the object in the given scope.
+ *
+ * @param aScope Scope containing required interfaces for this object.
+ *
+ * @return object.
+ */
+ public Object create(Scope aScope) {
+ return constructorConfig.create(aScope);
+ }
+
+ /**
+ * Injects required interfaces through the setters
+ *
+ * @param aScope Scope in which injection takes place.
+ * @param aObject Object to inject into.
+ */
+ public void inject(Scope aScope, Object aObject) {
+ objectConfig.inject(aScope, aObject);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public List getProvidedInterfaces() {
+ List result = new ArrayList();
+ result.add(new DefaultProvidedInterface("provided", _class));
+
+ return result;
+ }
- private Class _class;
- private ConstructorConfiguration _constructorConfig;
-
- /**
- * Constructs the configuration. By default no constructor is selected and
- * one of {@link #select(Class...)} or
- * {@link #greedy()} must be called.
- * @param aClass Class to construct.
- */
- public ClassConfiguration(Class aClass) {
- _class = aClass;
- _constructorConfig = new ConstructorConfiguration(aClass);
- }
-
- public ConstructorConfiguration getConstructorConfig() {
- return _constructorConfig;
- }
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public List getRequiredInterfaces() {
+ List result = new ArrayList();
+ result.addAll(constructorConfig.getRequiredInterfaces());
+ result.addAll(objectConfig.getRequiredInterfaces());
- /**
- * Creates the object in the given scope.
- * @param aScope Scope containing required interfaces for this object.
- * @return object.
- */
- public Object create(Scope aScope) {
- return _constructorConfig.create(aScope);
- }
-
- public ProvidedInterface[] getProvidedInterfaces() {
- return new ProvidedInterface[] {
- new DefaultProvidedInterface("provided", _class)
- };
- }
-
- public RequiredInterface[] getRequiredInterface() {
- return _constructorConfig.getRequiredInterfaces().toArray(new RequiredInterface[0]);
- }
+ return result;
+ }
}