You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gn...@apache.org on 2009/04/22 17:57:38 UTC
svn commit: r767576 [2/4] - in /geronimo/sandbox/blueprint:
blueprint-api/src/main/java/org/osgi/service/blueprint/context/
blueprint-api/src/main/java/org/osgi/service/blueprint/convert/
blueprint-api/src/main/java/org/osgi/service/blueprint/namespace...
Copied: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java (from r767394, geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/ModuleContextImpl.java)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java?p2=geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java&p1=geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/ModuleContextImpl.java&r1=767394&r2=767576&rev=767576&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/ModuleContextImpl.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java Wed Apr 22 15:57:35 2009
@@ -18,7 +18,6 @@
*/
package org.apache.geronimo.blueprint.context;
-import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
@@ -36,22 +35,21 @@
import org.apache.geronimo.blueprint.NamespaceHandlerRegistry;
import org.apache.geronimo.blueprint.convert.ConversionServiceImpl;
import org.apache.geronimo.blueprint.namespace.ComponentDefinitionRegistryImpl;
-import org.apache.xbean.recipe.ConstructionException;
import org.apache.xbean.recipe.ObjectGraph;
import org.apache.xbean.recipe.Repository;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.blueprint.context.ModuleContext;
+import org.osgi.service.blueprint.context.BlueprintContext;
import org.osgi.service.blueprint.context.NoSuchComponentException;
import org.osgi.service.blueprint.convert.ConversionService;
import org.osgi.service.blueprint.convert.Converter;
import org.osgi.service.blueprint.namespace.ComponentDefinitionRegistry;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
-import org.osgi.service.blueprint.reflect.LocalComponentMetadata;
-import org.osgi.service.blueprint.reflect.ServiceExportComponentMetadata;
-import org.osgi.service.blueprint.reflect.ServiceReferenceComponentMetadata;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
+import org.osgi.service.blueprint.reflect.ServiceMetadata;
+import org.osgi.service.blueprint.reflect.ServiceReferenceMetadata;
/**
* TODO: javadoc
@@ -59,7 +57,7 @@
* @author <a href="mailto:dev@geronimo.apache.org">Apache Geronimo Project</a>
* @version $Rev: 760378 $, $Date: 2009-03-31 11:31:38 +0200 (Tue, 31 Mar 2009) $
*/
-public class ModuleContextImpl implements ModuleContext {
+public class BlueprintContextImpl implements BlueprintContext {
private final BundleContext bundleContext;
private final ModuleContextEventSender sender;
@@ -70,7 +68,7 @@
private ObjectGraph objectGraph;
private ServiceRegistration registration;
- public ModuleContextImpl(BundleContext bundleContext, ModuleContextEventSender sender, NamespaceHandlerRegistry handlers, List<URL> urls) {
+ public BlueprintContextImpl(BundleContext bundleContext, ModuleContextEventSender sender, NamespaceHandlerRegistry handlers, List<URL> urls) {
this.bundleContext = bundleContext;
this.sender = sender;
this.handlers = handlers;
@@ -127,7 +125,7 @@
bundleContext.getBundle().getSymbolicName());
props.put(BlueprintConstants.CONTEXT_VERSION_PROPERTY,
bundleContext.getBundle().getHeaders().get(Constants.BUNDLE_VERSION));
- registration = bundleContext.registerService(ModuleContext.class.getName(), this, props);
+ registration = bundleContext.registerService(BlueprintContext.class.getName(), this, props);
sender.sendCreated(this);
} catch (WaitForDependencyException e) {
@@ -158,12 +156,12 @@
List<String> components = new ArrayList<String>();
for (String name : componentDefinitionRegistry.getComponentDefinitionNames()) {
ComponentMetadata component = componentDefinitionRegistry.getComponentDefinition(name);
- if (component instanceof LocalComponentMetadata) {
- LocalComponentMetadata local = (LocalComponentMetadata) component;
+ if (component instanceof BeanMetadata) {
+ BeanMetadata local = (BeanMetadata) component;
String scope = local.getScope();
- if (!local.isLazy() &&
- (LocalComponentMetadata.SCOPE_BUNDLE.equals(scope) ||
- LocalComponentMetadata.SCOPE_SINGLETON.equals(scope))) {
+ if (!local.isLazyInit() &&
+ (BeanMetadata.SCOPE_BUNDLE.equals(scope) ||
+ BeanMetadata.SCOPE_SINGLETON.equals(scope))) {
components.add(name);
}
}
@@ -173,15 +171,15 @@
}
private void registerAllServices() {
- for (ServiceExportComponentMetadata service : getExportedServicesMetadata()) {
- ServiceRegistrationProxy proxy = (ServiceRegistrationProxy) getComponent(service.getName());
+ for (ServiceMetadata service : getExportedServicesMetadata()) {
+ ServiceRegistrationProxy proxy = (ServiceRegistrationProxy) getComponent(service.getId());
proxy.register();
}
}
private void unregisterAllServices() {
- for (ServiceExportComponentMetadata service : getExportedServicesMetadata()) {
- ServiceRegistrationProxy proxy = (ServiceRegistrationProxy) getComponent(service.getName());
+ for (ServiceMetadata service : getExportedServicesMetadata()) {
+ ServiceRegistrationProxy proxy = (ServiceRegistrationProxy) getComponent(service.getId());
proxy.unregister();
}
}
@@ -206,16 +204,16 @@
return metadata;
}
- public Collection<ServiceReferenceComponentMetadata> getReferencedServicesMetadata() {
- return getMetadata(ServiceReferenceComponentMetadata.class);
+ public Collection<ServiceReferenceMetadata> getReferencedServicesMetadata() {
+ return getMetadata(ServiceReferenceMetadata.class);
}
- public Collection<ServiceExportComponentMetadata> getExportedServicesMetadata() {
- return getMetadata(ServiceExportComponentMetadata.class);
+ public Collection<ServiceMetadata> getExportedServicesMetadata() {
+ return getMetadata(ServiceMetadata.class);
}
- public Collection<LocalComponentMetadata> getLocalComponentsMetadata() {
- return getMetadata(LocalComponentMetadata.class);
+ public Collection<BeanMetadata> getBeanComponentsMetadata() {
+ return getMetadata(BeanMetadata.class);
}
private <T> Collection<T> getMetadata(Class<T> clazz) {
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BundleScopeServiceFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BundleScopeServiceFactory.java?rev=767576&r1=767575&r2=767576&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BundleScopeServiceFactory.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BundleScopeServiceFactory.java Wed Apr 22 15:57:35 2009
@@ -35,11 +35,11 @@
*/
public class BundleScopeServiceFactory implements ServiceFactory {
- private ModuleContextImpl moduleContext;
+ private BlueprintContextImpl moduleContext;
private BlueprintObjectRecipe serviceRecipe;
private Map<Bundle, Entry> instanceMap = Collections.synchronizedMap(new HashMap<Bundle, Entry>());
- public BundleScopeServiceFactory(ModuleContextImpl moduleContext, BlueprintObjectRecipe serviceRecipe) {
+ public BundleScopeServiceFactory(BlueprintContextImpl moduleContext, BlueprintObjectRecipe serviceRecipe) {
this.moduleContext = moduleContext;
this.serviceRecipe = serviceRecipe;
}
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java?rev=767576&r1=767575&r2=767576&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java Wed Apr 22 15:57:35 2009
@@ -24,15 +24,12 @@
import java.util.Comparator;
import java.util.List;
import java.util.ListIterator;
-import java.util.AbstractList;
import java.util.Iterator;
-import java.util.AbstractSet;
import java.util.RandomAccess;
import java.util.SortedSet;
import java.util.Set;
import java.util.AbstractCollection;
import java.util.ArrayList;
-import java.util.concurrent.CopyOnWriteArrayList;
import net.sf.cglib.proxy.Dispatcher;
import org.apache.geronimo.blueprint.Destroyable;
@@ -48,8 +45,8 @@
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.service.blueprint.context.ModuleContext;
-import org.osgi.service.blueprint.reflect.CollectionBasedServiceReferenceComponentMetadata;
+import org.osgi.service.blueprint.context.BlueprintContext;
+import org.osgi.service.blueprint.reflect.RefCollectionMetadata;
/**
* A recipe to create a managed collection of service references
@@ -59,15 +56,15 @@
*/
public class CollectionBasedServiceReferenceRecipe extends AbstractServiceReferenceRecipe {
- private final CollectionBasedServiceReferenceComponentMetadata metadata;
+ private final RefCollectionMetadata metadata;
private final Recipe comparatorRecipe;
private Comparator comparator;
private ManagedCollection collection;
- public CollectionBasedServiceReferenceRecipe(ModuleContext moduleContext,
+ public CollectionBasedServiceReferenceRecipe(BlueprintContext moduleContext,
ModuleContextEventSender sender,
- CollectionBasedServiceReferenceComponentMetadata metadata,
+ RefCollectionMetadata metadata,
Recipe listenersRecipe,
Recipe comparatorRecipe) {
super(moduleContext, sender, metadata, listenersRecipe);
@@ -84,11 +81,11 @@
if (comparatorRecipe != null) {
comparator = (Comparator) comparatorRecipe.create(proxyClassLoader);
- } else if (metadata.getOrderingComparisonBasis() != 0) {
+ } else if (metadata.getOrderingBasis() != 0) {
comparator = new NaturalOrderComparator();
}
- boolean orderReferences = metadata.getOrderingComparisonBasis() == CollectionBasedServiceReferenceComponentMetadata.ORDER_BASIS_SERVICE_REFERENCES;
- boolean memberReferences = metadata.getMemberType() == CollectionBasedServiceReferenceComponentMetadata.MEMBER_TYPE_SERVICE_REFERENCES;
+ boolean orderReferences = metadata.getOrderingBasis() == RefCollectionMetadata.ORDER_BASIS_SERVICE_REFERENCE;
+ boolean memberReferences = metadata.getMemberType() == RefCollectionMetadata.MEMBER_TYPE_SERVICE_REFERENCE;
if (metadata.getCollectionType() == List.class) {
if (comparator != null) {
collection = new ManagedSortedList(memberReferences, orderReferences, comparator);
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java?rev=767576&r1=767575&r2=767576&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java Wed Apr 22 15:57:35 2009
@@ -28,10 +28,9 @@
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.service.event.EventAdmin;
import org.osgi.service.event.Event;
-import org.osgi.service.event.EventConstants;
-import org.osgi.service.blueprint.context.ModuleContextEventConstants;
-import org.osgi.service.blueprint.context.ModuleContext;
-import org.osgi.service.blueprint.context.ModuleContextListener;
+import org.osgi.service.blueprint.context.EventConstants;
+import org.osgi.service.blueprint.context.BlueprintContext;
+import org.osgi.service.blueprint.context.BlueprintContextListener;
import org.apache.geronimo.blueprint.BlueprintConstants;
import org.apache.geronimo.blueprint.ModuleContextEventSender;
@@ -51,51 +50,53 @@
this.extenderBundle = bundleContext.getBundle();
this.eventAdminServiceTracker = new ServiceTracker(bundleContext, EventAdmin.class.getName(), null);
this.eventAdminServiceTracker.open();
- this.contextListenerTracker = new ServiceTracker(bundleContext, ModuleContextListener.class.getName(), null);
+ this.contextListenerTracker = new ServiceTracker(bundleContext, BlueprintContextListener.class.getName(), null);
this.contextListenerTracker.open();
}
- public void sendCreating(ModuleContext moduleContext) {
+ public void sendCreating(BlueprintContext moduleContext) {
sendEvent(moduleContext, TOPIC_CREATING, null, null, null);
}
- public void sendCreated(ModuleContext moduleContext) {
+ public void sendCreated(BlueprintContext moduleContext) {
sendEvent(moduleContext, TOPIC_CREATED, null, null, null);
}
- public void sendDestroying(ModuleContext moduleContext) {
+ public void sendDestroying(BlueprintContext moduleContext) {
sendEvent(moduleContext, TOPIC_DESTROYING, null, null, null);
}
- public void sendDestroyed(ModuleContext moduleContext) {
+ public void sendDestroyed(BlueprintContext moduleContext) {
sendEvent(moduleContext, TOPIC_DESTROYED, null, null, null);
}
- public void sendWaiting(ModuleContext moduleContext, String[] serviceObjectClass, String serviceFilter) {
+ public void sendWaiting(BlueprintContext moduleContext, String[] serviceObjectClass, String serviceFilter) {
sendEvent(moduleContext, TOPIC_WAITING, null, serviceObjectClass, serviceFilter);
}
- public void sendFailure(ModuleContext moduleContext, Throwable cause) {
+ public void sendFailure(BlueprintContext moduleContext, Throwable cause) {
sendEvent(moduleContext, TOPIC_FAILURE, cause, null, null);
}
- public void sendFailure(ModuleContext moduleContext, Throwable cause, String[] serviceObjectClass, String serviceFilter) {
+ public void sendFailure(BlueprintContext moduleContext, Throwable cause, String[] serviceObjectClass, String serviceFilter) {
sendEvent(moduleContext, TOPIC_FAILURE, cause, serviceObjectClass, serviceFilter);
}
- public void sendEvent(ModuleContext moduleContext, String topic, Throwable cause, String[] serviceObjectClass, String serviceFilter) {
+ public void sendEvent(BlueprintContext moduleContext, String topic, Throwable cause, String[] serviceObjectClass, String serviceFilter) {
if (topic == TOPIC_CREATED || topic == TOPIC_FAILURE) {
Object[] listeners = contextListenerTracker.getServices();
- for (Object listener : listeners) {
- try {
- if (topic == TOPIC_CREATED) {
- ((ModuleContextListener) listener).contextCreated(moduleContext.getBundleContext().getBundle());
- } else if (topic == TOPIC_FAILURE) {
- ((ModuleContextListener) listener).contextCreationFailed(moduleContext.getBundleContext().getBundle(), cause);
+ if (listeners != null) {
+ for (Object listener : listeners) {
+ try {
+ if (topic == TOPIC_CREATED) {
+ ((BlueprintContextListener) listener).contextCreated(moduleContext.getBundleContext().getBundle());
+ } else if (topic == TOPIC_FAILURE) {
+ ((BlueprintContextListener) listener).contextCreationFailed(moduleContext.getBundleContext().getBundle(), cause);
+ }
+ } catch (Throwable t) {
+ t.printStackTrace(); // TODO: log
}
- } catch (Throwable t) {
- t.printStackTrace(); // TODO: log
}
}
}
@@ -108,23 +109,23 @@
Bundle bundle = moduleContext.getBundleContext().getBundle();
Dictionary props = new Hashtable();
- props.put(EventConstants.BUNDLE_SYMBOLICNAME, bundle.getSymbolicName());
- props.put(EventConstants.BUNDLE_ID, bundle.getBundleId());
- props.put(EventConstants.BUNDLE, bundle);
+ props.put(org.osgi.service.event.EventConstants.BUNDLE_SYMBOLICNAME, bundle.getSymbolicName());
+ props.put(org.osgi.service.event.EventConstants.BUNDLE_ID, bundle.getBundleId());
+ props.put(org.osgi.service.event.EventConstants.BUNDLE, bundle);
Version version = getBundleVersion(bundle);
if (version != null) {
props.put(BlueprintConstants.BUNDLE_VERSION, version);
}
- props.put(EventConstants.TIMESTAMP, System.currentTimeMillis());
- props.put(ModuleContextEventConstants.EXTENDER_BUNDLE, extenderBundle);
- props.put(ModuleContextEventConstants.EXTENDER_ID, extenderBundle.getBundleId());
- props.put(ModuleContextEventConstants.EXTENDER_SYMBOLICNAME, extenderBundle.getSymbolicName());
+ props.put(org.osgi.service.event.EventConstants.TIMESTAMP, System.currentTimeMillis());
+ props.put(EventConstants.EXTENDER_BUNDLE, extenderBundle);
+ props.put(EventConstants.EXTENDER_ID, extenderBundle.getBundleId());
+ props.put(EventConstants.EXTENDER_SYMBOLICNAME, extenderBundle.getSymbolicName());
if (cause != null) {
- props.put(EventConstants.EXCEPTION, cause);
+ props.put(org.osgi.service.event.EventConstants.EXCEPTION, cause);
}
if (serviceObjectClass != null) {
- props.put(EventConstants.SERVICE_OBJECTCLASS, serviceObjectClass);
+ props.put(org.osgi.service.event.EventConstants.SERVICE_OBJECTCLASS, serviceObjectClass);
}
if (serviceFilter != null) {
props.put(BlueprintConstants.SERVICE_FILTER, serviceFilter);
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Instanciator.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Instanciator.java?rev=767576&r1=767575&r2=767576&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Instanciator.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Instanciator.java Wed Apr 22 15:57:35 2009
@@ -29,7 +29,8 @@
import java.util.Comparator;
import org.apache.geronimo.blueprint.namespace.ComponentDefinitionRegistryImpl;
-import org.apache.geronimo.blueprint.reflect.ServiceExportComponentMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.ServiceMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.MapMetadataImpl;
import org.apache.geronimo.blueprint.utils.ReflectionUtils;
import org.apache.xbean.recipe.ArrayRecipe;
import org.apache.xbean.recipe.CollectionRecipe;
@@ -42,25 +43,23 @@
import org.apache.xbean.recipe.Repository;
import org.osgi.service.blueprint.convert.ConversionService;
import org.osgi.service.blueprint.namespace.ComponentDefinitionRegistry;
-import org.osgi.service.blueprint.reflect.ArrayValue;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
-import org.osgi.service.blueprint.reflect.ComponentValue;
-import org.osgi.service.blueprint.reflect.ListValue;
-import org.osgi.service.blueprint.reflect.LocalComponentMetadata;
-import org.osgi.service.blueprint.reflect.MapValue;
-import org.osgi.service.blueprint.reflect.NullValue;
-import org.osgi.service.blueprint.reflect.PropertiesValue;
-import org.osgi.service.blueprint.reflect.PropertyInjectionMetadata;
-import org.osgi.service.blueprint.reflect.ReferenceNameValue;
-import org.osgi.service.blueprint.reflect.ReferenceValue;
-import org.osgi.service.blueprint.reflect.RegistrationListenerMetadata;
-import org.osgi.service.blueprint.reflect.ServiceExportComponentMetadata;
-import org.osgi.service.blueprint.reflect.SetValue;
-import org.osgi.service.blueprint.reflect.TypedStringValue;
-import org.osgi.service.blueprint.reflect.Value;
-import org.osgi.service.blueprint.reflect.UnaryServiceReferenceComponentMetadata;
-import org.osgi.service.blueprint.reflect.CollectionBasedServiceReferenceComponentMetadata;
-import org.osgi.service.blueprint.reflect.BindingListenerMetadata;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
+import org.osgi.service.blueprint.reflect.MapMetadata;
+import org.osgi.service.blueprint.reflect.NullMetadata;
+import org.osgi.service.blueprint.reflect.PropsMetadata;
+import org.osgi.service.blueprint.reflect.IdRefMetadata;
+import org.osgi.service.blueprint.reflect.RefMetadata;
+import org.osgi.service.blueprint.reflect.RegistrationListener;
+import org.osgi.service.blueprint.reflect.ServiceMetadata;
+import org.osgi.service.blueprint.reflect.ValueMetadata;
+import org.osgi.service.blueprint.reflect.Metadata;
+import org.osgi.service.blueprint.reflect.ReferenceMetadata;
+import org.osgi.service.blueprint.reflect.RefCollectionMetadata;
+import org.osgi.service.blueprint.reflect.Listener;
+import org.osgi.service.blueprint.reflect.BeanProperty;
+import org.osgi.service.blueprint.reflect.CollectionMetadata;
+import org.osgi.service.blueprint.reflect.MapEntry;
/**
* TODO: javadoc
@@ -85,9 +84,9 @@
primitiveClasses.put("boolean", boolean.class);
}
- private ModuleContextImpl moduleContext;
+ private BlueprintContextImpl moduleContext;
- public Instanciator(ModuleContextImpl moduleContext) {
+ public Instanciator(BlueprintContextImpl moduleContext) {
this.moduleContext = moduleContext;
}
@@ -106,11 +105,11 @@
addBuiltinComponents(repository);
// Create type-converter recipes
- for (Value value : registry.getTypeConverters()) {
- if (value instanceof ComponentValue) {
+ for (Metadata value : registry.getTypeConverters()) {
+ if (value instanceof ComponentMetadata) {
Recipe recipe = (Recipe) getValue(value, null);
repository.add(recipe.getName(), recipe);
- } else if (value instanceof ReferenceValue) {
+ } else if (value instanceof RefMetadata) {
ReferenceRecipe recipe = (ReferenceRecipe) getValue(value, null);
repository.add(recipe.getReferenceName(), recipe);
} else {
@@ -128,25 +127,24 @@
}
private Recipe createRecipe(ComponentMetadata component) throws Exception {
- if (component instanceof LocalComponentMetadata) {
- return createComponentRecipe( (LocalComponentMetadata) component);
- } else if (component instanceof ServiceExportComponentMetadata) {
- return createServiceRecipe( (ServiceExportComponentMetadata) component);
- } else if (component instanceof UnaryServiceReferenceComponentMetadata) {
- return createUnaryServiceReferenceRecipe(component);
- } else if (component instanceof CollectionBasedServiceReferenceComponentMetadata) {
- return createCollectionBasedServiceReferenceRecipe(component);
+ if (component instanceof BeanMetadata) {
+ return createComponentRecipe((BeanMetadata) component);
+ } else if (component instanceof ServiceMetadata) {
+ return createServiceRecipe((ServiceMetadata) component);
+ } else if (component instanceof ReferenceMetadata) {
+ return createUnaryServiceReferenceRecipe((ReferenceMetadata) component);
+ } else if (component instanceof RefCollectionMetadata) {
+ return createCollectionBasedServiceReferenceRecipe((RefCollectionMetadata) component);
} else {
throw new IllegalStateException("Unsupported component type " + component.getClass());
}
}
- private Recipe createCollectionBasedServiceReferenceRecipe(ComponentMetadata component) throws Exception {
- CollectionBasedServiceReferenceComponentMetadata metadata = (CollectionBasedServiceReferenceComponentMetadata) component;
+ private Recipe createCollectionBasedServiceReferenceRecipe(RefCollectionMetadata metadata) throws Exception {
CollectionRecipe listenersRecipe = null;
- if (metadata.getBindingListeners() != null) {
+ if (metadata.getServiceListeners() != null) {
listenersRecipe = new CollectionRecipe(ArrayList.class);
- for (BindingListenerMetadata listener : (Collection<BindingListenerMetadata>) metadata.getBindingListeners()) {
+ for (Listener listener : (Collection<Listener>) metadata.getServiceListeners()) {
listenersRecipe.add(createRecipe(listener));
}
}
@@ -160,16 +158,15 @@
metadata,
listenersRecipe,
comparatorRecipe);
- recipe.setName(component.getName());
+ recipe.setName(metadata.getId());
return recipe;
}
- private UnaryServiceReferenceRecipe createUnaryServiceReferenceRecipe(ComponentMetadata component) throws Exception {
- UnaryServiceReferenceComponentMetadata metadata = (UnaryServiceReferenceComponentMetadata) component;
+ private UnaryServiceReferenceRecipe createUnaryServiceReferenceRecipe(ReferenceMetadata metadata) throws Exception {
CollectionRecipe listenersRecipe = null;
- if (metadata.getBindingListeners() != null) {
+ if (metadata.getServiceListeners() != null) {
listenersRecipe = new CollectionRecipe(ArrayList.class);
- for (BindingListenerMetadata listener : (Collection<BindingListenerMetadata>) metadata.getBindingListeners()) {
+ for (Listener listener : (Collection<Listener>) metadata.getServiceListeners()) {
listenersRecipe.add(createRecipe(listener));
}
}
@@ -177,32 +174,32 @@
moduleContext.getSender(),
metadata,
listenersRecipe);
- recipe.setName(component.getName());
+ recipe.setName(metadata.getId());
return recipe;
}
- private ObjectRecipe createServiceRecipe(ServiceExportComponentMetadata serviceExport) throws Exception {
+ private ObjectRecipe createServiceRecipe(ServiceMetadata serviceExport) throws Exception {
ObjectRecipe recipe = new ObjectRecipe(ServiceRegistrationProxy.class);
recipe.allow(Option.PRIVATE_PROPERTIES);
- recipe.setName(serviceExport.getName());
+ recipe.setName(serviceExport.getId());
recipe.setProperty("moduleContext", moduleContext);
- LocalComponentMetadata exportedComponent = getLocalServiceComponent(serviceExport.getExportedComponent());
- if (exportedComponent != null && LocalComponentMetadata.SCOPE_BUNDLE.equals(exportedComponent.getScope())) {
+ BeanMetadata exportedComponent = getLocalServiceComponent(serviceExport.getServiceComponent());
+ if (exportedComponent != null && BeanMetadata.SCOPE_BUNDLE.equals(exportedComponent.getScope())) {
BlueprintObjectRecipe exportedComponentRecipe = createComponentRecipe(exportedComponent);
recipe.setProperty("service", new BundleScopeServiceFactory(moduleContext, exportedComponentRecipe));
} else {
- recipe.setProperty("service", getValue(serviceExport.getExportedComponent(), null));
+ recipe.setProperty("service", getValue(serviceExport.getServiceComponent(), null));
}
recipe.setProperty("metadata", serviceExport);
- if (serviceExport instanceof ServiceExportComponentMetadataImpl) {
- ServiceExportComponentMetadataImpl impl = (ServiceExportComponentMetadataImpl) serviceExport;
- if (impl.getServicePropertiesValue() != null) {
- recipe.setProperty("serviceProperties", getValue(impl.getServicePropertiesValue(), null));
+ if (serviceExport instanceof ServiceMetadataImpl) {
+ ServiceMetadataImpl impl = (ServiceMetadataImpl) serviceExport;
+ if (impl.getServiceProperties() != null) {
+ recipe.setProperty("serviceProperties", getValue(new MapMetadataImpl(null, null, impl.getServiceProperties()), null));
}
}
if (serviceExport.getRegistrationListeners() != null) {
CollectionRecipe listenersRecipe = new CollectionRecipe(ArrayList.class);
- for (RegistrationListenerMetadata listener : (Collection<RegistrationListenerMetadata>)serviceExport.getRegistrationListeners()) {
+ for (RegistrationListener listener : (Collection<RegistrationListener>)serviceExport.getRegistrationListeners()) {
listenersRecipe.add(createRecipe(listener));
}
recipe.setProperty("listeners", listenersRecipe);
@@ -210,15 +207,15 @@
return recipe;
}
- private BlueprintObjectRecipe createComponentRecipe(LocalComponentMetadata local) throws Exception {
+ private BlueprintObjectRecipe createComponentRecipe(BeanMetadata local) throws Exception {
BlueprintObjectRecipe recipe = new BlueprintObjectRecipe(loadClass(local.getClassName()));
recipe.allow(Option.PRIVATE_PROPERTIES);
- recipe.setName(local.getName());
- for (PropertyInjectionMetadata property : (Collection<PropertyInjectionMetadata>) local.getPropertyInjectionMetadata()) {
+ recipe.setName(local.getId());
+ for (BeanProperty property : local.getProperties()) {
Object value = getValue(property.getValue(), null);
recipe.setProperty(property.getName(), value);
}
- if (LocalComponentMetadata.SCOPE_PROTOTYPE.equals(local.getScope())) {
+ if (BeanMetadata.SCOPE_PROTOTYPE.equals(local.getScope())) {
recipe.setKeepRecipe(true);
}
ComponentDefinitionRegistryImpl registry = (ComponentDefinitionRegistryImpl)getComponentDefinitionRegistry();
@@ -230,7 +227,7 @@
} else if (initMethod.length() > 0) {
Method method = ReflectionUtils.getLifecycleMethod(recipe.getType(), initMethod);
if (method == null) {
- throw new ConstructionException("Component '" + local.getName() + "' does not have init-method: " + initMethod);
+ throw new ConstructionException("Component '" + local.getId() + "' does not have init-method: " + initMethod);
}
recipe.setInitMethod(method);
}
@@ -242,7 +239,7 @@
} else if (destroyMethod.length() > 0) {
Method method = ReflectionUtils.getLifecycleMethod(recipe.getType(), destroyMethod);
if (method == null) {
- throw new ConstructionException("Component '" + local.getName() + "' does not have destroy-method: " + destroyMethod);
+ throw new ConstructionException("Component '" + local.getId() + "' does not have destroy-method: " + destroyMethod);
}
recipe.setDestroyMethod(method);
}
@@ -252,7 +249,7 @@
return recipe;
}
- private Recipe createRecipe(RegistrationListenerMetadata listener) throws Exception {
+ private Recipe createRecipe(RegistrationListener listener) throws Exception {
ObjectRecipe recipe = new ObjectRecipe(ServiceRegistrationProxy.Listener.class);
recipe.allow(Option.PRIVATE_PROPERTIES);
recipe.setProperty("listener", getValue(listener.getListenerComponent(), null));
@@ -260,7 +257,7 @@
return recipe;
}
- private Recipe createRecipe(BindingListenerMetadata listener) throws Exception {
+ private Recipe createRecipe(Listener listener) throws Exception {
ObjectRecipe recipe = new ObjectRecipe(AbstractServiceReferenceRecipe.Listener.class);
recipe.allow(Option.PRIVATE_PROPERTIES);
recipe.setProperty("listener", getValue(listener.getListenerComponent(), null));
@@ -268,75 +265,78 @@
return recipe;
}
- private LocalComponentMetadata getLocalServiceComponent(Value value) throws Exception {
+ private BeanMetadata getLocalServiceComponent(Metadata value) throws Exception {
ComponentMetadata metadata = null;
- if (value instanceof ReferenceValue) {
- ReferenceValue ref = (ReferenceValue) value;
+ if (value instanceof RefMetadata) {
+ RefMetadata ref = (RefMetadata) value;
ComponentDefinitionRegistry registry = getComponentDefinitionRegistry();
- metadata = registry.getComponentDefinition(ref.getComponentName());
- } else if (value instanceof ComponentValue) {
- ComponentValue comp = (ComponentValue) value;
- metadata = comp.getComponentMetadata();
+ metadata = registry.getComponentDefinition(ref.getComponentId());
+ } else if (value instanceof ComponentMetadata) {
+ metadata = (ComponentMetadata) value;
}
- if (metadata instanceof LocalComponentMetadata) {
- return (LocalComponentMetadata) metadata;
+ if (metadata instanceof BeanMetadata) {
+ return (BeanMetadata) metadata;
} else {
return null;
}
}
- private Object getValue(Value v, Class groupingType) throws Exception {
- if (v instanceof NullValue) {
+ private Object getValue(Metadata v, Class groupingType) throws Exception {
+ if (v instanceof NullMetadata) {
return null;
- } else if (v instanceof TypedStringValue) {
- TypedStringValue stringValue = (TypedStringValue) v;
+ } else if (v instanceof ComponentMetadata) {
+ return createRecipe((ComponentMetadata) v);
+ } else if (v instanceof ValueMetadata) {
+ ValueMetadata stringValue = (ValueMetadata) v;
String value = stringValue.getStringValue();
Class type = loadClass(stringValue.getTypeName());
return new ValueRecipe(getConversionService(), value, type, groupingType);
- } else if (v instanceof ReferenceValue) {
- String componentName = ((ReferenceValue) v).getComponentName();
+ } else if (v instanceof RefMetadata) {
+ String componentName = ((RefMetadata) v).getComponentId();
return new ReferenceRecipe(componentName);
- } else if (v instanceof ListValue) {
- ListValue listValue = (ListValue) v;
- Class type = loadClass(listValue.getValueType());
- CollectionRecipe cr = new CollectionRecipe(ArrayList.class);
- for (Value lv : (List<Value>) listValue.getList()) {
- cr.add(getValue(lv, type));
- }
- return cr;
- } else if (v instanceof SetValue) {
- SetValue setValue = (SetValue) v;
- Class type = loadClass(setValue.getValueType());
- CollectionRecipe cr = new CollectionRecipe(HashSet.class);
- for (Value lv : (Set<Value>) setValue.getSet()) {
- cr.add(getValue(lv, type));
- }
- return cr;
- } else if (v instanceof MapValue) {
- MapValue mapValue = (MapValue) v;
- Class keyType = loadClass(mapValue.getKeyType());
- Class valueType = loadClass(mapValue.getValueType());
+ } else if (v instanceof CollectionMetadata) {
+ CollectionMetadata collectionMetadata = (CollectionMetadata) v;
+ Class type = loadClass(collectionMetadata.getValueTypeName());
+ if (collectionMetadata.getCollectionClass() == Object[].class) {
+ ArrayRecipe ar = new ArrayRecipe();
+ for (Metadata lv : collectionMetadata.getValues()) {
+ ar.add(getValue(lv, type));
+ }
+ return ar;
+ } else {
+ Class cl = collectionMetadata.getCollectionClass() == List.class ? ArrayList.class : HashSet.class;
+ CollectionRecipe cr = new CollectionRecipe(cl);
+ for (Metadata lv : collectionMetadata.getValues()) {
+ cr.add(getValue(lv, type));
+ }
+ return cr;
+ }
+ } else if (v instanceof MapMetadata) {
+ MapMetadata mapValue = (MapMetadata) v;
+ Class keyType = loadClass(mapValue.getKeyTypeName());
+ Class valueType = loadClass(mapValue.getValueTypeName());
+ MapRecipe mr = new MapRecipe(HashMap.class);
+ for (MapEntry entry : mapValue.getEntries()) {
+ Object key = getValue(entry.getKey(), keyType);
+ Object val = getValue(entry.getValue(), valueType);
+ mr.put(key, val);
+ }
+ return mr;
+ } else if (v instanceof PropsMetadata) {
+ // TODO
+ /*
+ PropsMetadata mapValue = (PropsMetadata) v;
MapRecipe mr = new MapRecipe(HashMap.class);
- for (Map.Entry<Value,Value> entry : ((Map<Value,Value>) mapValue.getMap()).entrySet()) {
+ for (MapEntry entry : mapValue.getEntries()) {
Object key = getValue(entry.getKey(), keyType);
Object val = getValue(entry.getValue(), valueType);
mr.put(key, val);
}
return mr;
- } else if (v instanceof ArrayValue) {
- ArrayValue arrayValue = (ArrayValue) v;
- Class type = loadClass(arrayValue.getValueType());
- ArrayRecipe ar = (type == null) ? new ArrayRecipe() : new ArrayRecipe(type);
- for (Value value : arrayValue.getArray()) {
- ar.add(getValue(value, type));
- }
- return ar;
- } else if (v instanceof ComponentValue) {
- return createRecipe(((ComponentValue) v).getComponentMetadata());
- } else if (v instanceof PropertiesValue) {
- return ((PropertiesValue) v).getPropertiesValue();
- } else if (v instanceof ReferenceNameValue) {
- return ((ReferenceNameValue) v).getReferenceName();
+ */
+ return null;
+ } else if (v instanceof IdRefMetadata) {
+ return ((IdRefMetadata) v).getComponentId();
} else {
throw new IllegalStateException("Unsupported value: " + v.getClass().getName());
}
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java?rev=767576&r1=767575&r2=767576&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java Wed Apr 22 15:57:35 2009
@@ -23,11 +23,8 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Properties;
import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
@@ -46,40 +43,38 @@
import org.apache.geronimo.blueprint.NamespaceHandlerRegistry;
import org.apache.geronimo.blueprint.namespace.ComponentDefinitionRegistryImpl;
import org.apache.geronimo.blueprint.namespace.ParserContextImpl;
-import org.apache.geronimo.blueprint.reflect.ArrayValueImpl;
-import org.apache.geronimo.blueprint.reflect.BindingListenerMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.CollectionBasedServiceReferenceComponentMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.ComponentValueImpl;
-import org.apache.geronimo.blueprint.reflect.ListValueImpl;
-import org.apache.geronimo.blueprint.reflect.LocalComponentMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.MapValueImpl;
-import org.apache.geronimo.blueprint.reflect.MethodInjectionMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.ParameterSpecificationImpl;
-import org.apache.geronimo.blueprint.reflect.PropertiesValueImpl;
-import org.apache.geronimo.blueprint.reflect.PropertyInjectionMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.ReferenceValueImpl;
-import org.apache.geronimo.blueprint.reflect.RegistrationListenerMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.ServiceExportComponentMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.ServiceReferenceComponentMetadataImpl;
-import org.apache.geronimo.blueprint.reflect.SetValueImpl;
-import org.apache.geronimo.blueprint.reflect.TypedStringValueImpl;
-import org.apache.geronimo.blueprint.reflect.UnaryServiceReferenceComponentMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.ListenerImpl;
+import org.apache.geronimo.blueprint.reflect.RefCollectionMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.CollectionMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.BeanMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.MapMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.BeanArgumentImpl;
+import org.apache.geronimo.blueprint.reflect.PropsMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.RefMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.RegistrationListenerImpl;
+import org.apache.geronimo.blueprint.reflect.ServiceMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.ServiceReferenceMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.ValueMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.ReferenceMetadataImpl;
+import org.apache.geronimo.blueprint.reflect.BeanPropertyImpl;
+import org.apache.geronimo.blueprint.reflect.MapEntryImpl;
import org.osgi.service.blueprint.context.ComponentDefinitionException;
import org.osgi.service.blueprint.namespace.NamespaceHandler;
-import org.osgi.service.blueprint.reflect.ArrayValue;
-import org.osgi.service.blueprint.reflect.BindingListenerMetadata;
-import org.osgi.service.blueprint.reflect.CollectionBasedServiceReferenceComponentMetadata;
+import org.osgi.service.blueprint.reflect.Listener;
+import org.osgi.service.blueprint.reflect.RefCollectionMetadata;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
-import org.osgi.service.blueprint.reflect.ListValue;
-import org.osgi.service.blueprint.reflect.LocalComponentMetadata;
-import org.osgi.service.blueprint.reflect.MapValue;
-import org.osgi.service.blueprint.reflect.NullValue;
-import org.osgi.service.blueprint.reflect.PropertiesValue;
-import org.osgi.service.blueprint.reflect.RegistrationListenerMetadata;
-import org.osgi.service.blueprint.reflect.ServiceExportComponentMetadata;
-import org.osgi.service.blueprint.reflect.ServiceReferenceComponentMetadata;
-import org.osgi.service.blueprint.reflect.SetValue;
-import org.osgi.service.blueprint.reflect.Value;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
+import org.osgi.service.blueprint.reflect.MapMetadata;
+import org.osgi.service.blueprint.reflect.NullMetadata;
+import org.osgi.service.blueprint.reflect.PropsMetadata;
+import org.osgi.service.blueprint.reflect.RegistrationListener;
+import org.osgi.service.blueprint.reflect.ServiceMetadata;
+import org.osgi.service.blueprint.reflect.ServiceReferenceMetadata;
+import org.osgi.service.blueprint.reflect.Metadata;
+import org.osgi.service.blueprint.reflect.Target;
+import org.osgi.service.blueprint.reflect.CollectionMetadata;
+import org.osgi.service.blueprint.reflect.MapEntry;
+import org.osgi.service.blueprint.reflect.NonNullMetadata;
import org.xml.sax.InputSource;
/**
@@ -93,11 +88,11 @@
public static final String BLUEPRINT_NAMESPACE = "http://www.osgi.org/xmlns/blueprint/v1.0.0";
public static final String BLUEPRINT_COMPENDIUM_NAMESPACE = "http://www.osgi.org/xmlns/blueprint-compendium/v1.0.0";
- public static final String COMPONENTS_ELEMENT = "components";
+ public static final String BLUEPRINT_ELEMENT = "blueprint";
public static final String DESCRIPTION_ELEMENT = "description";
public static final String TYPE_CONVERTERS_ELEMENT = "type-converters";
- public static final String COMPONENT_ELEMENT = "component";
- public static final String CONSTRUCTOR_ARG_ELEMENT = "constructor-arg";
+ public static final String BEAN_ELEMENT = "bean";
+ public static final String ARGUMENT_ELEMENT = "argument";
public static final String REF_ELEMENT = "ref";
public static final String IDREF_ELEMENT = "idref";
public static final String LIST_ELEMENT = "list";
@@ -252,8 +247,8 @@
defaultDestroyMethod = null;
Element root = doc.getDocumentElement();
if (!isBlueprintNamespace(root.getNamespaceURI()) ||
- !nodeNameEquals(root, COMPONENTS_ELEMENT)) {
- throw new ComponentDefinitionException("Root element must be {" + BLUEPRINT_NAMESPACE + "}" + COMPONENTS_ELEMENT + " element");
+ !nodeNameEquals(root, BLUEPRINT_ELEMENT)) {
+ throw new ComponentDefinitionException("Root element must be {" + BLUEPRINT_NAMESPACE + "}" + BLUEPRINT_ELEMENT + " element");
}
// Parse global attributes
if (root.hasAttribute(DEFAULT_LAZY_INIT_ATTRIBUTE)) {
@@ -315,20 +310,20 @@
// Ignore description
} else if (nodeNameEquals(element, TYPE_CONVERTERS_ELEMENT)) {
parseTypeConverters(element);
- } else if (nodeNameEquals(element, COMPONENT_ELEMENT)) {
- ComponentMetadata component = parseComponentMetadata(element);
+ } else if (nodeNameEquals(element, BEAN_ELEMENT)) {
+ ComponentMetadata component = parseBeanMetadata(element);
registry.registerComponentDefinition(component);
} else if (nodeNameEquals(element, SERVICE_ELEMENT)) {
ComponentMetadata service = parseService(element);
registry.registerComponentDefinition(service);
} else if (nodeNameEquals(element, REFERENCE_ELEMENT)) {
- ComponentMetadata reference = parseUnaryReference(element);
+ ComponentMetadata reference = parseReference(element);
registry.registerComponentDefinition(reference);
} else if (nodeNameEquals(element, REFLIST_ELEMENT) ) {
- ComponentMetadata references = parseReferenceCollection(element, List.class);
+ ComponentMetadata references = parseRefCollection(element, List.class);
registry.registerComponentDefinition(references);
} else if (nodeNameEquals(element, REFSET_ELEMENT)) {
- ComponentMetadata references = parseReferenceCollection(element, Set.class);
+ ComponentMetadata references = parseRefCollection(element, Set.class);
registry.registerComponentDefinition(references);
} else {
throw new ComponentDefinitionException("Unknown element " + element.getNodeName() + " in namespace " + BLUEPRINT_NAMESPACE);
@@ -346,27 +341,27 @@
Node node = nl.item(i);
if (node instanceof Element) {
Element e = (Element) node;
- if (nodeNameEquals(e, COMPONENT_ELEMENT)) {
- ComponentMetadata metadata = parseComponentMetadata(e);
- registry.registerTypeConverter(new ComponentValueImpl(metadata));
+ if (nodeNameEquals(e, BEAN_ELEMENT)) {
+ ComponentMetadata metadata = parseBeanMetadata(e);
+ registry.registerTypeConverter((Target) metadata);
} else if (nodeNameEquals(e, REF_ELEMENT)) {
String componentName = e.getAttribute(COMPONENT_ATTRIBUTE);
- registry.registerTypeConverter(new ReferenceValueImpl(componentName));
+ registry.registerTypeConverter(new RefMetadataImpl(componentName));
}
}
}
}
- private ComponentMetadata parseComponentMetadata(Element element) {
- LocalComponentMetadataImpl metadata = new LocalComponentMetadataImpl();
- metadata.setName(getName(element));
+ private ComponentMetadata parseBeanMetadata(Element element) {
+ BeanMetadataImpl metadata = new BeanMetadataImpl();
+ metadata.setId(getName(element));
if (element.hasAttribute(CLASS_ATTRIBUTE)) {
metadata.setClassName(element.getAttribute(CLASS_ATTRIBUTE));
}
if (element.hasAttribute(SCOPE_ATTRIBUTE)) {
metadata.setScope(element.getAttribute(SCOPE_ATTRIBUTE));
} else {
- metadata.setScope(LocalComponentMetadata.SCOPE_SINGLETON);
+ metadata.setScope(BeanMetadata.SCOPE_SINGLETON);
}
String lazy = element.hasAttribute(LAZY_INIT_ATTRIBUTE) ? element.getAttribute(LAZY_INIT_ATTRIBUTE) : defaultLazyInit;
if (BOOLEAN_DEFAULT.equals(lazy)) {
@@ -375,14 +370,14 @@
}
}
if (BOOLEAN_TRUE.equals(lazy)) {
- metadata.setLazy(true);
+ metadata.setLazyInit(true);
} else if (BOOLEAN_FALSE.equals(lazy)) {
- metadata.setLazy(false);
+ metadata.setLazyInit(false);
} else {
throw new ComponentDefinitionException("Attribute " + LAZY_INIT_ATTRIBUTE + " must be equals to " + BOOLEAN_DEFAULT + ", " + BOOLEAN_TRUE + " or " + BOOLEAN_FALSE);
}
if (element.hasAttribute(DEPENDS_ON_ATTRIBUTE)) {
- metadata.setExplicitDependencies(parseListAsSet(element.getAttribute(DEPENDS_ON_ATTRIBUTE)));
+ metadata.setExplicitDependencies(parseList(element.getAttribute(DEPENDS_ON_ATTRIBUTE)));
}
if (element.hasAttribute(INIT_METHOD_ATTRIBUTE)) {
metadata.setInitMethodName(element.getAttribute(INIT_METHOD_ATTRIBUTE));
@@ -391,11 +386,11 @@
metadata.setDestroyMethodName(element.getAttribute(DESTROY_METHOD_ATTRIBUTE));
}
if (element.hasAttribute(FACTORY_COMPONENT_ATTRIBUTE)) {
- metadata.setFactoryComponent(new ReferenceValueImpl(element.getAttribute(FACTORY_COMPONENT_ATTRIBUTE)));
+ metadata.setFactoryComponent(new RefMetadataImpl(element.getAttribute(FACTORY_COMPONENT_ATTRIBUTE)));
}
if (element.hasAttribute(FACTORY_METHOD_ATTRIBUTE)) {
String factoryMethod = element.getAttribute(FACTORY_METHOD_ATTRIBUTE);
- metadata.setFactoryMethodMetadata(new MethodInjectionMetadataImpl(factoryMethod, null));
+ metadata.setFactoryMethodName(factoryMethod);
}
// Parse elements
@@ -405,15 +400,15 @@
if (node instanceof Element) {
Element e = (Element) node;
if (isBlueprintNamespace(node.getNamespaceURI())) {
- if (nodeNameEquals(node, CONSTRUCTOR_ARG_ELEMENT)) {
+ if (nodeNameEquals(node, ARGUMENT_ELEMENT)) {
int index = e.hasAttribute(INDEX_ATTRIBUTE) ? Integer.parseInt(e.getAttribute(INDEX_ATTRIBUTE)) : -1;
String type = e.hasAttribute(TYPE_ATTRIBUTE) ? e.getAttribute(TYPE_ATTRIBUTE) : null;
- Value value = parseValue(e, metadata);
- metadata.addConsuctorArg(new ParameterSpecificationImpl(value, type, index));
+ Metadata value = parseValue(e, metadata);
+ metadata.addArgument(new BeanArgumentImpl(value, type, index));
} else if (nodeNameEquals(node, PROPERTY_ELEMENT)) {
String name = e.hasAttribute(NAME_ATTRIBUTE) ? e.getAttribute(NAME_ATTRIBUTE) : null;
- Value value = parseValue(e, metadata);
- metadata.addProperty(new PropertyInjectionMetadataImpl(name, value));
+ Metadata value = parseValue(e, metadata);
+ metadata.addProperty(new BeanPropertyImpl(name, value));
}
}
}
@@ -431,26 +426,26 @@
}
private ComponentMetadata parseService(Element element) {
- ServiceExportComponentMetadataImpl service = new ServiceExportComponentMetadataImpl();
- service.setName(getName(element));
+ ServiceMetadataImpl service = new ServiceMetadataImpl();
+ service.setId(getName(element));
if (element.hasAttribute(INTERFACE_ATTRIBUTE)) {
- service.setInterfaceNames(Collections.singleton(element.getAttribute(INTERFACE_ATTRIBUTE)));
+ service.setInterfaceNames(Collections.singletonList(element.getAttribute(INTERFACE_ATTRIBUTE)));
}
if (element.hasAttribute(REF_ATTRIBUTE)) {
- service.setExportedComponent(new ReferenceValueImpl(element.getAttribute(REF_ATTRIBUTE)));
+ service.setExportedComponent(new RefMetadataImpl(element.getAttribute(REF_ATTRIBUTE)));
}
if (element.hasAttribute(DEPENDS_ON_ATTRIBUTE)) {
- service.setExplicitDependencies(parseListAsSet(element.getAttribute(DEPENDS_ON_ATTRIBUTE)));
+ service.setExplicitDependencies(parseList(element.getAttribute(DEPENDS_ON_ATTRIBUTE)));
}
String autoExport = element.hasAttribute(AUTO_EXPORT_ATTRIBUTE) ? element.getAttribute(AUTO_EXPORT_ATTRIBUTE) : AUTO_EXPORT_DEFAULT;
if (AUTO_EXPORT_DISABLED.equals(autoExport)) {
- service.setAutoExportMode(ServiceExportComponentMetadata.EXPORT_MODE_DISABLED);
+ service.setAutoExportMode(ServiceMetadata.AUTO_EXPORT_DISABLED);
} else if (AUTO_EXPORT_INTERFACES.equals(autoExport)) {
- service.setAutoExportMode(ServiceExportComponentMetadata.EXPORT_MODE_INTERFACES);
+ service.setAutoExportMode(ServiceMetadata.AUTO_EXPORT_INTERFACES);
} else if (AUTO_EXPORT_CLASS_HIERARCHY.equals(autoExport)) {
- service.setAutoExportMode(ServiceExportComponentMetadata.EXPORT_MODE_CLASS_HIERARCHY);
+ service.setAutoExportMode(ServiceMetadata.AUTO_EXPORT_CLASS_HIERARCHY);
} else if (AUTO_EXPORT_ALL.equals(autoExport)) {
- service.setAutoExportMode(ServiceExportComponentMetadata.EXPORT_MODE_ALL);
+ service.setAutoExportMode(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
} else {
throw new ComponentDefinitionException("Illegal value (" + autoExport + ") for " + AUTO_EXPORT_ATTRIBUTE + " attribute");
}
@@ -473,21 +468,21 @@
}
service.setInterfaceNames(parseInterfaceNames(e));
} else if (nodeNameEquals(e, SERVICE_PROPERTIES_ELEMENT)) {
- service.setServicePropertiesValue(parseMap(e, service));
+ service.setServiceProperties(parseMap(e, service).getEntries());
} else if (nodeNameEquals(e, REGISTRATION_LISTENER_ELEMENT)) {
service.addRegistrationListener(parseRegistrationListener(e));
- } else if (nodeNameEquals(e, COMPONENT_ELEMENT)) {
- if (service.getExportedComponent() != null) {
- throw new ComponentDefinitionException("Only one of " + REF_ATTRIBUTE + " attribute, " + COMPONENT_ELEMENT + " element or custom inner element can be set");
+ } else if (nodeNameEquals(e, BEAN_ELEMENT)) {
+ if (service.getServiceComponent() != null) {
+ throw new ComponentDefinitionException("Only one of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or custom inner element can be set");
}
- service.setExportedComponent(new ComponentValueImpl(parseComponentMetadata(e)));
+ service.setExportedComponent((Target) parseBeanMetadata(e));
}
}
}
}
// Check service
- if (service.getExportedComponent() == null) {
- throw new ComponentDefinitionException("One of " + REF_ATTRIBUTE + " attribute, " + COMPONENT_ELEMENT + " element or custom inner element must be set");
+ if (service.getServiceComponent() == null) {
+ throw new ComponentDefinitionException("One of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or custom inner element must be set");
}
ComponentMetadata s = service;
@@ -498,115 +493,74 @@
return s;
}
- private ArrayValue parseArray(Element element, ComponentMetadata enclosingComponent) {
- // Parse attributes
- String valueType = element.hasAttribute(VALUE_TYPE_ATTRIBUTE) ? element.getAttribute(VALUE_TYPE_ATTRIBUTE) : null;
- // Parse elements
- List<Value> list = new ArrayList<Value>();
- NodeList nl = element.getChildNodes();
- for (int i = 0; i < nl.getLength(); i++) {
- Node node = nl.item(i);
- if (node instanceof Element) {
- Value val = parseValueElement((Element) node, enclosingComponent, true);
- list.add(val);
- }
- }
- return new ArrayValueImpl(valueType, list.toArray(new Value[list.size()]));
+ private CollectionMetadata parseArray(Element element, ComponentMetadata enclosingComponent) {
+ return parseCollection(Object[].class, element, enclosingComponent);
}
- private ListValue parseList(Element element, ComponentMetadata enclosingComponent) {
- // Parse attributes
- String valueType = element.hasAttribute(VALUE_TYPE_ATTRIBUTE) ? element.getAttribute(VALUE_TYPE_ATTRIBUTE) : null;
- // Parse elements
- List<Value> list = new ArrayList<Value>();
- NodeList nl = element.getChildNodes();
- for (int i = 0; i < nl.getLength(); i++) {
- Node node = nl.item(i);
- if (node instanceof Element) {
- Value val = parseValueElement((Element) node, enclosingComponent, true);
- list.add(val);
- }
- }
- return new ListValueImpl(valueType, list);
+ private CollectionMetadata parseList(Element element, ComponentMetadata enclosingComponent) {
+ return parseCollection(List.class, element, enclosingComponent);
}
- private SetValue parseSet(Element element, ComponentMetadata enclosingComponent) {
+ private CollectionMetadata parseSet(Element element, ComponentMetadata enclosingComponent) {
+ return parseCollection(Set.class, element, enclosingComponent);
+ }
+
+ private CollectionMetadata parseCollection(Class collectionType, Element element, ComponentMetadata enclosingComponent) {
// Parse attributes
String valueType = element.hasAttribute(VALUE_TYPE_ATTRIBUTE) ? element.getAttribute(VALUE_TYPE_ATTRIBUTE) : null;
// Parse elements
- Set<Value> set = new HashSet<Value>();
+ List<Metadata> list = new ArrayList<Metadata>();
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
- Value val = parseValueElement((Element) node, enclosingComponent, true);
- set.add(val);
+ Metadata val = parseValueElement((Element) node, enclosingComponent, true);
+ list.add(val);
}
}
- return new SetValueImpl(valueType, set);
+ return new CollectionMetadataImpl(collectionType, valueType, list);
}
- private PropertiesValue parseProps(Element element) {
+ private PropsMetadata parseProps(Element element) {
// Parse elements
- Properties props = new Properties();
- NodeList nl = element.getChildNodes();
- for (int i = 0; i < nl.getLength(); i++) {
- Node node = nl.item(i);
- if (node instanceof Element) {
- Element e = (Element) node;
- if (nodeNameEquals(e, PROP_ELEMENT)) {
- String key = e.getAttribute(KEY_ATTRIBUTE);
- String val;
- if (e.hasAttribute(VALUE_ATTRIBUTE)) {
- val = e.getAttribute(VALUE_ATTRIBUTE);
- } else {
- val = getTextValue(e);
- }
- props.setProperty(key, val);
- } else {
- throw new ComponentDefinitionException("Unknown element " + e.getNodeName());
- }
-
- }
- }
- return new PropertiesValueImpl(props);
+ return new PropsMetadataImpl(parseMap(element, null).getEntries());
}
- private MapValue parseMap(Element element, ComponentMetadata enclosingComponent) {
+ private MapMetadata parseMap(Element element, ComponentMetadata enclosingComponent) {
// Parse attributes
String keyType = element.hasAttribute(KEY_TYPE_ATTRIBUTE) ? element.getAttribute(KEY_TYPE_ATTRIBUTE) : null;
String valueType = element.hasAttribute(VALUE_TYPE_ATTRIBUTE) ? element.getAttribute(VALUE_TYPE_ATTRIBUTE) : null;
// Parse elements
- Map<Value, Value> map = new HashMap<Value, Value>();
+ List<MapEntry> entries = new ArrayList<MapEntry>();
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
Element e = (Element) node;
if (nodeNameEquals(e, ENTRY_ELEMENT)) {
- parseMapEntry(map, e, enclosingComponent);
+ entries.add(parseMapEntry(e, enclosingComponent));
}
}
}
- return new MapValueImpl(keyType, valueType, map);
+ return new MapMetadataImpl(keyType, valueType, entries);
}
- private void parseMapEntry(Map<Value, Value> map, Element element, ComponentMetadata enclosingComponent) {
+ private MapEntry parseMapEntry(Element element, ComponentMetadata enclosingComponent) {
// Parse attributes
String key = element.hasAttribute(KEY_ATTRIBUTE) ? element.getAttribute(KEY_ATTRIBUTE) : null;
String keyRef = element.hasAttribute(KEY_REF_ATTRIBUTE) ? element.getAttribute(KEY_REF_ATTRIBUTE) : null;
String value = element.hasAttribute(VALUE_ATTRIBUTE) ? element.getAttribute(VALUE_ATTRIBUTE) : null;
String valueRef = element.hasAttribute(VALUE_REF_ATTRIBUTE) ? element.getAttribute(VALUE_REF_ATTRIBUTE) : null;
// Parse elements
- Value keyValue = null;
- Value valValue = null;
+ NonNullMetadata keyValue = null;
+ Metadata valValue = null;
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
Element e = (Element) node;
if (nodeNameEquals(e, KEY_ELEMENT)) {
- keyValue = parseValueElement(e, enclosingComponent, false);
+ keyValue = (NonNullMetadata) parseValueElement(e, enclosingComponent, false);
} else {
valValue = parseValueElement(e, enclosingComponent, true);
}
@@ -616,28 +570,28 @@
if (keyValue != null && (key != null || keyRef != null) || (keyValue == null && key == null && keyRef == null)) {
throw new ComponentDefinitionException("Only and only one of " + KEY_ATTRIBUTE + " attribute, " + KEY_REF_ATTRIBUTE + " attribute or " + KEY_ELEMENT + " element must be set");
} else if (keyValue == null && key != null) {
- keyValue = new TypedStringValueImpl(key);
+ keyValue = new ValueMetadataImpl(key);
} else if (keyValue == null /*&& keyRef != null*/) {
- keyValue = new ReferenceValueImpl(keyRef);
+ keyValue = new RefMetadataImpl(keyRef);
}
// Check value
if (valValue != null && (value != null || valueRef != null) || (valValue == null && value == null && valueRef == null)) {
throw new ComponentDefinitionException("Only and only one of " + VALUE_ATTRIBUTE + " attribute, " + VALUE_REF_ATTRIBUTE + " attribute or sub element must be set");
} else if (valValue == null && value != null) {
- valValue = new TypedStringValueImpl(value);
+ valValue = new ValueMetadataImpl(value);
} else if (valValue == null /*&& valueRef != null*/) {
- valValue = new ReferenceValueImpl(valueRef);
+ valValue = new RefMetadataImpl(valueRef);
}
- map.put(keyValue, valValue);
+ return new MapEntryImpl(keyValue, valValue);
}
- private RegistrationListenerMetadata parseRegistrationListener(Element element) {
+ private RegistrationListener parseRegistrationListener(Element element) {
// Parse attributes
String ref = element.hasAttribute(REF_ATTRIBUTE) ? element.getAttribute(REF_ATTRIBUTE) : null;
String registrationMethod = element.getAttribute(REGISTRATION_METHOD_ATTRIBUTE);
String unregistrationMethod = element.getAttribute(UNREGISTRATION_METHOD_ATTRIBUTE);
// Parse elements
- Value listenerComponent = null;
+ Metadata listenerComponent = null;
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
@@ -648,26 +602,23 @@
if (component == null || component.length() == 0) {
throw new ComponentDefinitionException("Element " + REF_ELEMENT + " must have a valid " + COMPONENT_ATTRIBUTE + " attribute");
}
- listenerComponent = new ReferenceValueImpl(component);
- } else if (nodeNameEquals(e, COMPONENT_ELEMENT)) {
- ComponentMetadata component = parseComponentMetadata(e);
- listenerComponent = new ComponentValueImpl(component);
+ listenerComponent = new RefMetadataImpl(component);
+ } else if (nodeNameEquals(e, BEAN_ELEMENT)) {
+ listenerComponent = parseBeanMetadata(e);
} else if (nodeNameEquals(e, REFERENCE_ELEMENT)) {
- ComponentMetadata reference = parseUnaryReference(e);
- listenerComponent = new ComponentValueImpl(reference);
+ listenerComponent = parseReference(e);
} else if (nodeNameEquals(e, SERVICE_ELEMENT)) {
- ComponentMetadata service = parseService(e);
- listenerComponent = new ComponentValueImpl(service);
+ listenerComponent = parseService(e);
}
}
}
if (listenerComponent != null && ref != null) {
throw new ComponentDefinitionException("Attribute " + REF_ATTRIBUTE + " can not be set in addition to a child element");
} else if (listenerComponent == null && ref != null) {
- listenerComponent = new ReferenceValueImpl(ref);
+ listenerComponent = new RefMetadataImpl(ref);
}
- RegistrationListenerMetadataImpl listener = new RegistrationListenerMetadataImpl();
- listener.setListenerComponent(listenerComponent);
+ RegistrationListenerImpl listener = new RegistrationListenerImpl();
+ listener.setListenerComponent((Target) listenerComponent);
if (registrationMethod == null || registrationMethod.length() == 0) {
throw new ComponentDefinitionException("Attribute " + REGISTRATION_METHOD_ATTRIBUTE + " must be set");
}
@@ -679,9 +630,9 @@
return listener;
}
- private ComponentMetadata parseUnaryReference(Element element) {
- UnaryServiceReferenceComponentMetadataImpl reference = new UnaryServiceReferenceComponentMetadataImpl();
- reference.setName(getName(element));
+ private ComponentMetadata parseReference(Element element) {
+ ReferenceMetadataImpl reference = new ReferenceMetadataImpl();
+ reference.setId(getName(element));
parseReference(element, reference);
String timeout = element.hasAttribute(TIMEOUT_ATTRIBUTE) ? element.getAttribute(TIMEOUT_ATTRIBUTE) : this.defaultTimeout;
try {
@@ -698,30 +649,30 @@
return r;
}
- private ComponentMetadata parseReferenceCollection(Element element, Class collectionType) {
- CollectionBasedServiceReferenceComponentMetadataImpl references = new CollectionBasedServiceReferenceComponentMetadataImpl();
- references.setName(getName(element));
+ private ComponentMetadata parseRefCollection(Element element, Class collectionType) {
+ RefCollectionMetadataImpl references = new RefCollectionMetadataImpl();
+ references.setId(getName(element));
references.setCollectionType(collectionType);
if (element.hasAttribute(COMPARATOR_REF_ATTRIBUTE)) {
- references.setComparator(new ReferenceValueImpl(element.getAttribute(COMPARATOR_REF_ATTRIBUTE)));
+ references.setComparator(new RefMetadataImpl(element.getAttribute(COMPARATOR_REF_ATTRIBUTE)));
}
if (element.hasAttribute(MEMBER_TYPE_ATTRIBUTE)) {
String memberType = element.getAttribute(MEMBER_TYPE_ATTRIBUTE);
if (MEMBER_TYPE_SERVICES.equals(memberType)) {
- references.setMemberType(CollectionBasedServiceReferenceComponentMetadata.MEMBER_TYPE_SERVICES);
+ references.setMemberType(RefCollectionMetadata.MEMBER_TYPE_SERVICE_INSTANCE);
} else if (MEMBER_TYPE_SERVICE_REFERENCE.equals(memberType)) {
- references.setMemberType(CollectionBasedServiceReferenceComponentMetadata.MEMBER_TYPE_SERVICE_REFERENCES);
+ references.setMemberType(RefCollectionMetadata.MEMBER_TYPE_SERVICE_REFERENCE);
}
} else {
- references.setMemberType(CollectionBasedServiceReferenceComponentMetadata.MEMBER_TYPE_SERVICES);
+ references.setMemberType(RefCollectionMetadata.MEMBER_TYPE_SERVICE_INSTANCE);
}
if (element.hasAttribute(ORDERING_BASIS_ATTRIBUTE)) {
String ordering = element.getAttribute(ORDERING_BASIS_ATTRIBUTE);
if (ORDERING_BASIS_SERVICES.equals(ordering)) {
- references.setOrderingComparisonBasis(CollectionBasedServiceReferenceComponentMetadata.ORDER_BASIS_SERVICES);
+ references.setOrderingBasis(RefCollectionMetadata.ORDER_BASIS_SERVICE);
} else if (ODERING_BASIS_SERVICE_REFERENCES.equals(ordering)) {
- references.setOrderingComparisonBasis(CollectionBasedServiceReferenceComponentMetadata.ORDER_BASIS_SERVICE_REFERENCES);
+ references.setOrderingBasis(RefCollectionMetadata.ORDER_BASIS_SERVICE_REFERENCE);
}
}
parseReference(element, references);
@@ -747,8 +698,8 @@
return r;
}
- private void parseComparator(Element element, CollectionBasedServiceReferenceComponentMetadataImpl references) {
- Value comparator = null;
+ private void parseComparator(Element element, RefCollectionMetadataImpl references) {
+ Metadata comparator = null;
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
@@ -760,33 +711,29 @@
if (component == null || component.length() == 0) {
throw new ComponentDefinitionException("Element " + REF_ELEMENT + " must have a valid " + COMPONENT_ATTRIBUTE + " attribute");
}
- comparator = new ReferenceValueImpl(component);
- } else if (nodeNameEquals(e, COMPONENT_ELEMENT)) {
- ComponentMetadata component = parseComponentMetadata(e);
- comparator = new ComponentValueImpl(component);
+ comparator = new RefMetadataImpl(component);
+ } else if (nodeNameEquals(e, BEAN_ELEMENT)) {
+ comparator = parseBeanMetadata(e);
} else if (nodeNameEquals(e, REFERENCE_ELEMENT)) {
- ComponentMetadata reference = parseUnaryReference(e);
- comparator = new ComponentValueImpl(reference);
+ comparator = parseReference(e);
} else if (nodeNameEquals(e, SERVICE_ELEMENT)) {
- ComponentMetadata service = parseService(e);
- comparator = new ComponentValueImpl(service);
+ comparator = parseService(e);
}
} else {
- ComponentMetadata custom = parseCustomElement(e, references);
- comparator = new ComponentValueImpl(custom);
+ comparator = parseCustomElement(e, references);
}
}
}
if (comparator == null) {
- throw new ComponentDefinitionException("One of " + REF_ELEMENT + ", " + COMPONENTS_ELEMENT + ", " + REFERENCE_ELEMENT + ", " + SERVICE_ELEMENT + " or custom element is required");
+ throw new ComponentDefinitionException("One of " + REF_ELEMENT + ", " + BLUEPRINT_ELEMENT + ", " + REFERENCE_ELEMENT + ", " + SERVICE_ELEMENT + " or custom element is required");
}
- references.setComparator(comparator);
+ references.setComparator((Target) comparator);
}
- private void parseReference(Element element, ServiceReferenceComponentMetadataImpl reference) {
+ private void parseReference(Element element, ServiceReferenceMetadataImpl reference) {
// Parse attributes
if (element.hasAttribute(INTERFACE_ATTRIBUTE)) {
- reference.setInterfaceNames(Collections.singleton(element.getAttribute(INTERFACE_ATTRIBUTE)));
+ reference.setInterfaceNames(Collections.singletonList(element.getAttribute(INTERFACE_ATTRIBUTE)));
}
if (element.hasAttribute(FILTER_ATTRIBUTE)) {
reference.setFilter(element.getAttribute(FILTER_ATTRIBUTE));
@@ -796,9 +743,9 @@
}
String availability = element.hasAttribute(AVAILABILITY_ATTRIBUTE) ? element.getAttribute(AVAILABILITY_ATTRIBUTE) : defaultAvailability;
if (AVAILABILITY_MANDATORY.equals(availability)) {
- reference.setServiceAvailabilitySpecification(ServiceReferenceComponentMetadata.MANDATORY_AVAILABILITY);
+ reference.setAvailability(ServiceReferenceMetadata.MANDATORY_AVAILABILITY);
} else if (AVAILABILITY_OPTIONAL.equals(availability)) {
- reference.setServiceAvailabilitySpecification(ServiceReferenceComponentMetadata.OPTIONAL_AVAILABILITY);
+ reference.setAvailability(ServiceReferenceMetadata.OPTIONAL_AVAILABILITY);
} else {
throw new ComponentDefinitionException("Illegal value for " + AVAILABILITY_ATTRIBUTE + " attribute: " + availability);
}
@@ -815,18 +762,18 @@
}
reference.setInterfaceNames(parseInterfaceNames(e));
} else if (nodeNameEquals(e, LISTENER_ELEMENT)) {
- reference.addBindingListener(parseBindingListener(e, reference));
+ reference.addServiceListener(parseServiceListener(e, reference));
}
}
}
}
}
- private BindingListenerMetadata parseBindingListener(Element element, ComponentMetadata enclosingComponent) {
- BindingListenerMetadataImpl listener = new BindingListenerMetadataImpl();
+ private Listener parseServiceListener(Element element, ComponentMetadata enclosingComponent) {
+ ListenerImpl listener = new ListenerImpl();
// Parse attributes
if (element.hasAttribute(REF_ATTRIBUTE)) {
- listener.setListenerComponent(new ReferenceValueImpl(element.getAttribute(REF_ATTRIBUTE)));
+ listener.setListenerComponent(new RefMetadataImpl(element.getAttribute(REF_ATTRIBUTE)));
}
listener.setBindMethodName(element.getAttribute(BIND_METHOD_ATTRIBUTE));
listener.setUnbindMethodName(element.getAttribute(UNBIND_METHOD_ATTRIBUTE));
@@ -845,40 +792,40 @@
if (component == null || component.length() == 0) {
throw new ComponentDefinitionException("Element " + REF_ELEMENT + " must have a valid " + COMPONENT_ATTRIBUTE + " attribute");
}
- listener.setListenerComponent(new ReferenceValueImpl(component));
- } else if (nodeNameEquals(e, COMPONENT_ELEMENT)) {
+ listener.setListenerComponent(new RefMetadataImpl(component));
+ } else if (nodeNameEquals(e, BEAN_ELEMENT)) {
if (listener.getListenerComponent() != null) {
throw new ComponentDefinitionException("Attribute " + REF_ATTRIBUTE + " can not be set in addition to a child element");
}
- ComponentMetadata component = parseComponentMetadata(e);
- listener.setListenerComponent(new ComponentValueImpl(component));
+ ComponentMetadata component = parseBeanMetadata(e);
+ listener.setListenerComponent((Target) component);
} else if (nodeNameEquals(e, REFERENCE_ELEMENT)) {
if (listener.getListenerComponent() != null) {
throw new ComponentDefinitionException("Attribute " + REF_ATTRIBUTE + " can not be set in addition to a child element");
}
- ComponentMetadata reference = parseUnaryReference(e);
- listener.setListenerComponent(new ComponentValueImpl(reference));
+ ComponentMetadata reference = parseReference(e);
+ listener.setListenerComponent((Target) reference);
} else if (nodeNameEquals(e, SERVICE_ELEMENT)) {
if (listener.getListenerComponent() != null) {
throw new ComponentDefinitionException("Attribute " + REF_ATTRIBUTE + " can not be set in addition to a child element");
}
ComponentMetadata service = parseService(e);
- listener.setListenerComponent(new ComponentValueImpl(service));
+ listener.setListenerComponent((Target) service);
}
} else {
if (listener.getListenerComponent() != null) {
throw new ComponentDefinitionException("Attribute " + REF_ATTRIBUTE + " can not be set in addition to a child element");
}
ComponentMetadata custom = parseCustomElement(e, enclosingComponent);
- listener.setListenerComponent(new ComponentValueImpl(custom));
+ listener.setListenerComponent((Target) custom);
}
}
}
return listener;
}
- private Set<String> parseInterfaceNames(Element element) {
- Set<String> interfaceNames = new HashSet<String>();
+ private List<String> parseInterfaceNames(Element element) {
+ List<String> interfaceNames = new ArrayList<String>();
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
@@ -895,11 +842,11 @@
return interfaceNames;
}
- private Value parseValue(Element element, ComponentMetadata enclosingComponent) {
+ private Metadata parseValue(Element element, ComponentMetadata enclosingComponent) {
if (element.hasAttribute(REF_ATTRIBUTE)) {
- return new ReferenceValueImpl(element.getAttribute(REF_ATTRIBUTE));
+ return new RefMetadataImpl(element.getAttribute(REF_ATTRIBUTE));
} else if (element.hasAttribute(VALUE_ATTRIBUTE)) {
- return new TypedStringValueImpl(element.getAttribute(VALUE_ATTRIBUTE));
+ return new ValueMetadataImpl(element.getAttribute(VALUE_ATTRIBUTE));
} else {
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
@@ -917,31 +864,30 @@
throw new ComponentDefinitionException("One of " + REF_ATTRIBUTE + " attribute, " + VALUE_ATTRIBUTE + " attribute or sub element must be set");
}
- private Value parseValueElement(Element element, ComponentMetadata enclosingComponent, boolean allowNull) {
+ private Metadata parseValueElement(Element element, ComponentMetadata enclosingComponent, boolean allowNull) {
if (isBlueprintNamespace(element.getNamespaceURI())) {
- if (nodeNameEquals(element, COMPONENT_ELEMENT)) {
- ComponentMetadata inner = parseComponentMetadata(element);
- return new ComponentValueImpl(inner);
+ if (nodeNameEquals(element, BEAN_ELEMENT)) {
+ return parseBeanMetadata(element);
} else if (nodeNameEquals(element, NULL_ELEMENT) && allowNull) {
- return NullValue.NULL;
+ return NullMetadata.NULL;
} else if (nodeNameEquals(element, VALUE_ELEMENT)) {
String type = null;
if (element.hasAttribute(TYPE_ATTRIBUTE)) {
type = element.getAttribute(TYPE_ATTRIBUTE);
}
- return new TypedStringValueImpl(getTextValue(element), type);
+ return new ValueMetadataImpl(getTextValue(element), type);
} else if (nodeNameEquals(element, REF_ELEMENT)) {
String component = element.getAttribute(COMPONENT_ATTRIBUTE);
if (component == null || component.length() == 0) {
throw new ComponentDefinitionException("Element " + REF_ELEMENT + " must have a valid " + COMPONENT_ATTRIBUTE + " attribute");
}
- return new ReferenceValueImpl(component);
+ return new RefMetadataImpl(component);
} else if (nodeNameEquals(element, IDREF_ELEMENT)) {
String component = element.getAttribute(COMPONENT_ATTRIBUTE);
if (component == null || component.length() == 0) {
throw new ComponentDefinitionException("Element " + REF_ELEMENT + " must have a valid " + COMPONENT_ATTRIBUTE + " attribute");
}
- return new ReferenceValueImpl(component);
+ return new RefMetadataImpl(component);
} else if (nodeNameEquals(element, LIST_ELEMENT)) {
return parseList(element, enclosingComponent);
} else if (nodeNameEquals(element, SET_ELEMENT)) {
@@ -956,8 +902,7 @@
throw new ComponentDefinitionException("Unknown blueprint element " + element.getNodeName());
}
} else {
- ComponentMetadata innerComponent = parseCustomElement(element, enclosingComponent);
- return new ComponentValueImpl(innerComponent);
+ return parseCustomElement(element, enclosingComponent);
}
}
@@ -1040,9 +985,9 @@
return (name.equals(node.getNodeName()) || name.equals(node.getLocalName()));
}
- private static Set<String> parseListAsSet(String list) {
+ private static List<String> parseList(String list) {
String[] items = list.split(",");
- Set<String> set = new HashSet<String>();
+ List<String> set = new ArrayList<String>();
for (String item : items) {
item = item.trim();
if (item.length() > 0) {