Author: dblevins
Date: Tue Sep 11 21:26:06 2007
New Revision: 574782

URL: http://svn.apache.org/viewvc?rev=574782&view=rev
Log:
Rewrote configureService working in the new 'type' attribute available in 
<Resource>, <Container> and other elements in openejb.xml

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/TransactionAtts.java
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/AbstractService.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ConnectionManager.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Connector.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Container.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JndiProvider.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ProxyFactory.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Resource.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SecurityService.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/TransactionManager.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigureServiceTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
 Tue Sep 11 21:26:06 2007
@@ -18,6 +18,7 @@
 package org.apache.openejb.config;
 
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.config.sys.Resource;
 import org.apache.openejb.assembler.classic.ContainerInfo;
 import org.apache.openejb.assembler.classic.ResourceInfo;
 import org.apache.openejb.assembler.classic.LinkResolver;
@@ -673,7 +674,7 @@
         if (!autoCreateResources){
             throw new OpenEJBException(message);
         }
-        logger.info(message);
+        logger.debug(message);
 
         // if there is a provider with the specified name. use it
         if (ServiceUtils.hasServiceProvider(resourceId)) {
@@ -695,6 +696,8 @@
             throw new OpenEJBException("No provider available for resource 
reference '" + resourceId + "' of type '" + type + "' for '" + beanName + "'.");
         }
         ResourceInfo resourceInfo = configFactory.configureService(resourceId, 
ResourceInfo.class);
+
+        logger.info("Auto-creating a resource with id '" + resourceInfo.id +  
"' of type '" + type  + " for '" + beanName + "'.");
         return installResource(beanName, resourceInfo);
     }
 
@@ -737,7 +740,7 @@
         if (!autoCreateResources){
             throw new OpenEJBException(message);
         }
-        logger.info(message);
+        logger.debug(message);
 
 
         // Auto create a resource using the first provider that can supply a 
resource of the desired type
@@ -745,9 +748,12 @@
         if (providerId == null) {
                 throw new OpenEJBException("No provider available for resource 
reference '" + resourceId + "' of type '" + type + "' for '" + beanName + "'.");
         }
-        Properties properties = new Properties();
-        properties.setProperty("destination", resourceId);
-        ResourceInfo resourceInfo = 
configFactory.configureService(ResourceInfo.class, resourceId, properties, 
providerId, null);
+
+        Resource resource = new Resource(resourceId, providerId, null);
+        resource.getProperties().setProperty("destination", resourceId);
+
+        ResourceInfo resourceInfo = configFactory.configureService(resource, 
ResourceInfo.class);
+        logger.info("Auto-creating a resource with id '" + resourceInfo.id +  
"' of type '" + type  + " for '" + beanName + "'.");
         return installResource(beanName, resourceInfo);
     }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 Tue Sep 11 21:26:06 2007
@@ -369,7 +369,7 @@
                 appInfo.persistenceUnits.add(info);
             }
         }
-        
+
         // process JNDI refs... all JDNI refs for the whole application
         // must be processed at the same time
         JndiEncInfoBuilder.initJndiReferences(appModule, appInfo);
@@ -407,7 +407,7 @@
 
         ReportValidationResults reportValidationResults = new 
ReportValidationResults();
         reportValidationResults.deploy(appModule);
-        
+
         logger.info("Loaded Module: " + appInfo.jarPath);
         return appInfo;
     }
@@ -435,101 +435,81 @@
 
     private static final Map<Class<? extends ServiceInfo>, DefaultService> 
defaultProviders = new HashMap<Class<? extends ServiceInfo>, DefaultService>();
 
+    private static final Map<Class<? extends ServiceInfo>, Class<? extends 
Service>> types = new HashMap<Class<? extends ServiceInfo>, Class<? extends 
Service>>();
+
     static {
-        defaultProviders.put(MdbContainerInfo.class, new 
DefaultService("Default MDB Container", Container.class));
-        defaultProviders.put(StatefulSessionContainerInfo.class, new 
DefaultService("Default Stateful Container", Container.class));
-        defaultProviders.put(StatelessSessionContainerInfo.class, new 
DefaultService("Default Stateless Container", Container.class));
-        defaultProviders.put(CmpEntityContainerInfo.class, new 
DefaultService("Default CMP Container", Container.class));
-        defaultProviders.put(BmpEntityContainerInfo.class, new 
DefaultService("Default BMP Container", Container.class));
-        defaultProviders.put(SecurityServiceInfo.class, new 
DefaultService("Default Security Service", SecurityService.class));
-        defaultProviders.put(TransactionServiceInfo.class, new 
DefaultService("Default Transaction Manager", TransactionManager.class));
-        defaultProviders.put(ConnectionManagerInfo.class, new 
DefaultService("Default Local TX ConnectionManager", ConnectionManager.class));
-        defaultProviders.put(ProxyFactoryInfo.class, new 
DefaultService("Default JDK 1.3 ProxyFactory", ProxyFactory.class));
+        defaultProviders.put(MdbContainerInfo.class, new 
DefaultService("MESSAGE", Container.class));
+        defaultProviders.put(StatefulSessionContainerInfo.class, new 
DefaultService("STATEFUL", Container.class));
+        defaultProviders.put(StatelessSessionContainerInfo.class, new 
DefaultService("STATELESS", Container.class));
+        defaultProviders.put(CmpEntityContainerInfo.class, new 
DefaultService("CMP_ENTITY", Container.class));
+        defaultProviders.put(BmpEntityContainerInfo.class, new 
DefaultService("BMP_ENTITY", Container.class));
+        defaultProviders.put(SecurityServiceInfo.class, new 
DefaultService("SecurityService", SecurityService.class));
+        defaultProviders.put(TransactionServiceInfo.class, new 
DefaultService("TransactionManager", TransactionManager.class));
+        defaultProviders.put(ConnectionManagerInfo.class, new 
DefaultService("ConnectionManager", ConnectionManager.class));
+        defaultProviders.put(ProxyFactoryInfo.class, new 
DefaultService("ProxyFactory", ProxyFactory.class));
+
+        for (Map.Entry<Class<? extends ServiceInfo>, DefaultService> entry : 
defaultProviders.entrySet()) {
+            types.put(entry.getKey(), entry.getValue().type);
+        }
+
+        types.put(ResourceInfo.class, Resource.class);
     }
 
+
     public <T extends ServiceInfo> T configureService(Class<? extends T> type) 
throws OpenEJBException {
+        Service service = getDefaultService(type);
+
+        return configureService(service, type);
+    }
+
+    private <T extends ServiceInfo>Service getDefaultService(Class<? extends 
T> type) throws OpenEJBException {
         DefaultService defaultService = defaultProviders.get(type);
 
         Service service = null;
         try {
             service = JaxbOpenejb.create(defaultService.type);
-            service.setProvider(defaultService.id);
-            service.setId(defaultService.id);
+            service.setType(defaultService.id);
         } catch (Exception e) {
             throw new OpenEJBException("Cannot instantiate class " + 
defaultService.type.getName(), e);
         }
-
-        return configureService(service, type);
+        return service;
     }
 
 
-    public <T extends ServiceInfo> T configureService(Service service, Class<? 
extends T> type) throws OpenEJBException {
+    public <T extends ServiceInfo> T configureService(Service service, Class<? 
extends T> infoType) throws OpenEJBException {
+        if (infoType == null) throw new NullPointerException("type");
+
         if (service == null) {
-            return configureService(type);
+            service = getDefaultService(infoType);
         }
 
-        Properties declaredProperties = new Properties();
-        declaredProperties.putAll(service.getProperties());
-
-        return configureService(type, service.getId(), declaredProperties, 
service.getProvider(), service.getClass().getSimpleName());
-    }
-
-    public <T extends ServiceInfo>T configureService(String id, Class<? 
extends T> type) throws OpenEJBException {
-        return configureService(type, id, null, id, null);
-    }
+        String providerType = service.getClass().getSimpleName();
 
-    /**
-     * Resolving the provider for a particular service follows this algorithm:
-     *
-     * 1.  Attempt to load the provider specified by the 'providerId'.
-     * 2.  If this fails, throw NoSuchProviderException
-     * 3.  If providerId is null, attempt to load the specified provider using 
the 'serviceId' as the 'providerId'
-     * 4.  If this fails, check the hardcoded defaults for a default 
providerId using the supplied 'type'
-     * 5.  If this fails, throw NoSuchProviderException
-     */
-    public <T extends ServiceInfo>T configureService(Class<? extends T> type, 
String serviceId, Properties declaredProperties, String providerId, String 
serviceType) throws OpenEJBException {
-        if (type == null) throw new NullPointerException("type");
-        if (serviceId == null) throw new NullPointerException("serviceId");
+        ServiceProvider provider = resolveServiceProvider(service, infoType);
 
-        if (declaredProperties == null){
-            declaredProperties = new Properties();
+        if (provider == null){
+            throw new NoSuchProviderException("Cannot determine a default 
provider for Service("+service.getId() +", "+infoType.getSimpleName()+")");
         }
 
-        ServiceProvider provider = null;
-        if (providerId != null) {
-            provider = ServiceUtils.getServiceProvider(providerId);
-        } else {
-            try {
-                provider = ServiceUtils.getServiceProvider(serviceId);
-            } catch (NoSuchProviderException e) {
-                DefaultService defaultProvider = defaultProviders.get(type);
-                if (defaultProvider == null){
-                    throw new NoSuchProviderException("Cannot determine a 
default provider for Service("+serviceId +", "+type.getSimpleName()+")");
-                }
-                provider = ServiceUtils.getServiceProvider(defaultProvider.id);
-                providerId = provider.getId();
-            }
-        }
+        if (service.getId() == null) service.setId(provider.getId());
+
+        logger.info("Configuring Service(id=" + service.getId() + ", type=" + 
provider.getProviderType() + ", provider-id=" + provider.getId() + ")");
 
-        logger.info("Configuring Service(id=" + serviceId + ", type=" + 
provider.getProviderType() + ", provider-id=" + provider.getId() + ")");
         Properties props = new Properties();
         props.putAll(provider.getProperties());
-        props.putAll(declaredProperties);
-
-        Properties serviceProperties = getSystemProperties(serviceId);
+        props.putAll(service.getProperties());
+        props.putAll(getSystemProperties(service.getId()));
 
-        props.putAll(serviceProperties);
-
-        if (serviceType != null && 
!provider.getProviderType().equals(serviceType)) {
-            throw new OpenEJBException(messages.format("conf.4902", serviceId, 
serviceType));
+        if (providerType != null && 
!provider.getProviderType().equals(providerType)) {
+            throw new OpenEJBException(messages.format("conf.4902", 
service.getId(), providerType));
         }
 
         T info = null;
 
         try {
-            info = type.newInstance();
+            info = infoType.newInstance();
         } catch (Exception e) {
-            throw new OpenEJBException("Cannot instantiate class " + 
type.getName(), e);
+            throw new OpenEJBException("Cannot instantiate class " + 
infoType.getName(), e);
         }
 
         info.serviceType = provider.getProviderType();
@@ -537,18 +517,67 @@
         info.displayName = provider.getDisplayName();
         info.className = provider.getClassName();
         info.factoryMethod = provider.getFactoryName();
-        info.id = serviceId;
+        info.id = service.getId();
         info.properties = props;
         info.constructorArgs.addAll(parseConstructorArgs(provider));
 
-//        String serviceId = serviceType + ":" + info.id;
-//        if (serviceIds.contains(serviceId)) {
-//            handleException("conf.0105", configLocation, info.id, 
serviceType);
-//        }
+        return info;
+    }
 
-//        serviceIds.add(serviceId);
+    private ServiceProvider resolveServiceProvider(Service service, Class 
infoType) throws OpenEJBException {
 
-        return info;
+        if (service.getProvider() != null) {
+            return ServiceUtils.getServiceProvider(service.getProvider());
+        }
+
+        if (service.getType() != null) {
+            return 
ServiceUtils.getServiceProviderByType(service.getClass().getSimpleName(), 
service.getType());
+        }
+
+        if (service.getId() != null) {
+            try {
+                return ServiceUtils.getServiceProvider(service.getId());
+            } catch (NoSuchProviderException e) {
+            }
+        }
+
+        if (infoType != null) {
+            Service defaultService = getDefaultService(infoType);
+            return resolveServiceProvider(defaultService, null);
+        }
+
+        return null;
+    }
+
+    public <T extends ServiceInfo>T configureService(String id, Class<? 
extends T> type) throws OpenEJBException {
+        return configureService(type, id, null, id, null);
+    }
+
+    /**
+     * Resolving the provider for a particular service follows this algorithm:
+     *
+     * 1.  Attempt to load the provider specified by the 'providerId'.
+     * 2.  If this fails, throw NoSuchProviderException
+     * 3.  If providerId is null, attempt to load the specified provider using 
the 'serviceId' as the 'providerId'
+     * 4.  If this fails, check the hardcoded defaults for a default 
providerId using the supplied 'type'
+     * 5.  If this fails, throw NoSuchProviderException
+     */
+    public <T extends ServiceInfo>T configureService(Class<? extends T> type, 
String serviceId, Properties declaredProperties, String providerId, String 
serviceType) throws OpenEJBException {
+        Class<? extends Service> serviceClass = types.get(type);
+        Service service = null;
+        try {
+            service = serviceClass.newInstance();
+        } catch (Exception e) {
+            throw new OpenEJBException("Cannot instantiate service class '" + 
serviceClass.getName() + "'", e);
+        }
+        service.setId(serviceId);
+        service.setProvider(providerId);
+
+        if (declaredProperties != null) {
+            service.getProperties().putAll(declaredProperties);
+        }
+
+        return configureService(service, type);
     }
 
     private Properties getSystemProperties(String serviceId) {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
 Tue Sep 11 21:26:06 2007
@@ -90,13 +90,35 @@
     }
 
     public static String getServiceProviderId(String type) throws 
OpenEJBException {
+        ServiceProvider provider = getServiceProviderByType(type);
+
+        return provider != null? provider.getId(): null;
+    }
+
+    public static ServiceProvider getServiceProviderByType(String type) throws 
OpenEJBException {
         if (type == null) return null;
 
         List<ServiceProvider> services = getServices(defaultProviderURL);
 
         for (ServiceProvider service : services) {
             if (service.getServiceTypes().contains(type)) {
-                return service.getId();
+                return service;
+            }
+        }
+
+        return null;
+    }
+
+    public static ServiceProvider getServiceProviderByType(String 
providerType, String serviceType) throws OpenEJBException {
+        if (serviceType == null) return null;
+
+        List<ServiceProvider> services = getServices(defaultProviderURL);
+
+        for (ServiceProvider service : services) {
+            if (!service.getProviderType().equals(providerType)) continue;
+            
+            if (service.getServiceTypes().contains(serviceType)) {
+                return service;
             }
         }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/AbstractService.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/AbstractService.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/AbstractService.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/AbstractService.java
 Tue Sep 11 21:26:06 2007
@@ -61,11 +61,10 @@
 
 
     protected AbstractService(String id) {
-        this(id, null, null, new Properties());
+        this(id, null, null);
     }
     
-    protected AbstractService(String id, String provider, String type, 
Properties properties) {
-        this.properties = properties;
+    protected AbstractService(String id, String provider, String type) {
         this.id = id;
         this.provider = provider;
         this.type = type;

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ConnectionManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ConnectionManager.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ConnectionManager.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ConnectionManager.java
 Tue Sep 11 21:26:06 2007
@@ -17,14 +17,10 @@
  */
 package org.apache.openejb.config.sys;
 
-import org.apache.openejb.config.Service;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
 import java.util.Properties;
 
 /**
@@ -53,8 +49,8 @@
         super(id);
     }
 
-    public ConnectionManager(String id, String provider, String type, 
Properties properties) {
-        super(id, provider, type, properties);
+    public ConnectionManager(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public ConnectionManager() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Connector.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Connector.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Connector.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Connector.java
 Tue Sep 11 21:26:06 2007
@@ -49,8 +49,8 @@
         super(id);
     }
 
-    public Connector(String id, String provider, String type, Properties 
properties) {
-        super(id, provider, type, properties);
+    public Connector(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public Connector() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Container.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Container.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Container.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Container.java
 Tue Sep 11 21:26:06 2007
@@ -52,8 +52,8 @@
         super(id);
     }
 
-    public Container(String id, String provider, String type, Properties 
properties) {
-        super(id, provider, type, properties);
+    public Container(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public Container() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JndiProvider.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JndiProvider.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JndiProvider.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JndiProvider.java
 Tue Sep 11 21:26:06 2007
@@ -49,8 +49,8 @@
         super(id);
     }
 
-    public JndiProvider(String id, String provider, String type, Properties 
properties) {
-        super(id, provider, type, properties);
+    public JndiProvider(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public JndiProvider() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ProxyFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ProxyFactory.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ProxyFactory.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ProxyFactory.java
 Tue Sep 11 21:26:06 2007
@@ -49,8 +49,8 @@
         super(id);
     }
 
-    public ProxyFactory(String id, String provider, String type, Properties 
properties) {
-        super(id, provider, type, properties);
+    public ProxyFactory(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public ProxyFactory() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Resource.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Resource.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Resource.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Resource.java
 Tue Sep 11 21:26:06 2007
@@ -54,8 +54,8 @@
         super(id);
     }
 
-    public Resource(String id, String provider, String type, Properties 
properties) {
-        super(id, provider, type, properties);
+    public Resource(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public Resource() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SecurityService.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SecurityService.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SecurityService.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SecurityService.java
 Tue Sep 11 21:26:06 2007
@@ -50,8 +50,8 @@
         super(id);
     }
 
-    public SecurityService(String id, String provider, String type, Properties 
properties) {
-        super(id, provider, type, properties);
+    public SecurityService(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public SecurityService() {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/TransactionManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/TransactionManager.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/TransactionManager.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/TransactionManager.java
 Tue Sep 11 21:26:06 2007
@@ -49,8 +49,8 @@
         super(id);
     }
 
-    public TransactionManager(String id, String provider, String type, 
Properties properties) {
-        super(id, provider, type, properties);
+    public TransactionManager(String id, String provider, String type) {
+        super(id, provider, type);
     }
 
     public TransactionManager() {

Added: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/TransactionAtts.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/TransactionAtts.java?rev=574782&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/TransactionAtts.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/TransactionAtts.java
 Tue Sep 11 21:26:06 2007
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.util;
+
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TransactionAtts {
+
[EMAIL PROTECTED]
+public static class MyBean implements MyBusinessInterface {
+
+    @TransactionAttribute(TransactionAttributeType.MANDATORY)
+    public String codeRed(String s) {
+        return s;
+    }
+}
+
+}

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
 Tue Sep 11 21:26:06 2007
@@ -208,6 +208,7 @@
   <ServiceProvider
           id="Default JDK 1.3 ProxyFactory"
           provider-type="ProxyFactory"
+          service-types="ProxyFactory"
           class-name="org.apache.openejb.util.proxy.Jdk13ProxyFactory"/>
 
   <!--
@@ -218,11 +219,13 @@
   <ServiceProvider
           id="PseudoSecurityService"
           provider-type="SecurityService"
+          service-types="SecurityService"
           class-name="org.apache.openejb.ri.sp.PseudoSecurityService"/>
 
   <ServiceProvider
           id="Default Security Service"
           provider-type="SecurityService"
+          service-types="SecurityService"
           class-name="org.apache.openejb.core.security.SecurityServiceImpl"/>
 
   <!--
@@ -233,6 +236,7 @@
   <ServiceProvider
           id="Default Transaction Manager"
           provider-type="TransactionManager"
+          service-types="TransactionManager"
           
class-name="org.apache.geronimo.transaction.manager.GeronimoTransactionManager"/>
 
   <!--
@@ -660,6 +664,7 @@
   <ServiceProvider
           id="Default Local TX ConnectionManager"
           provider-type="ConnectionManager"
+          service-types="ConnectionManager"
           constructor="transactionManager"
           
class-name="org.apache.openejb.resource.SharedLocalConnectionManager"/>
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigureServiceTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigureServiceTest.java?rev=574782&r1=574781&r2=574782&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigureServiceTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigureServiceTest.java
 Tue Sep 11 21:26:06 2007
@@ -18,6 +18,10 @@
 
 import junit.framework.TestCase;
 import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+import org.apache.openejb.assembler.classic.ResourceInfo;
+import org.apache.openejb.assembler.classic.ContainerInfo;
+import org.apache.openejb.config.sys.Resource;
+import org.apache.openejb.config.sys.Container;
 
 import java.util.Properties;
 
@@ -38,11 +42,11 @@
         assertNotNull(defaultStatelessContainer.properties);
 
         // We should be able to create one of these with a different name
-        String containerId = "My Stateless Container";
-        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(StatelessSessionContainerInfo.class, containerId, 
null, null, null);
+        Container container = new Container("My Stateless Container");
+        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(container, StatelessSessionContainerInfo.class);
 
         assertNotNull(myStatelessContainer);
-        assertEquals(containerId, myStatelessContainer.id);
+        assertEquals("My Stateless Container", myStatelessContainer.id);
         assertEquals(defaultStatelessContainer.className, 
myStatelessContainer.className);
         assertNotNull(myStatelessContainer.constructorArgs);
         assertNotNull(myStatelessContainer.properties);
@@ -53,11 +57,12 @@
         ConfigurationFactory factory = new ConfigurationFactory();
 
         // We should be able to create one of these with a different name
-        String containerId = "MyContainer";
-        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(StatelessSessionContainerInfo.class, containerId, 
null, "org.acme#CheddarContainer", null);
+
+        Container container = new Container("MyContainer", 
"org.acme#CheddarContainer", "STATELESS");
+        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(container, StatelessSessionContainerInfo.class);
 
         assertNotNull(myStatelessContainer);
-        assertEquals(containerId, myStatelessContainer.id);
+        assertEquals("MyContainer", myStatelessContainer.id);
         assertEquals("org.acme.SuperContainer", 
myStatelessContainer.className);
         assertNotNull(myStatelessContainer.constructorArgs);
         assertNotNull(myStatelessContainer.properties);
@@ -68,14 +73,13 @@
     public void testConfigureServiceOverriddenProperty() throws Exception {
         ConfigurationFactory factory = new ConfigurationFactory();
 
-        Properties properties = new Properties();
-        properties.setProperty("myProperty", "Cheese is good");
+        Container container = new Container("MyContainer", 
"org.acme#CheddarContainer", "STATELESS");
+        container.getProperties().setProperty("myProperty", "Cheese is good");
 
-        String containerId = "MyContainer";
-        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(StatelessSessionContainerInfo.class, containerId, 
properties, "org.acme#CheddarContainer", null);
+        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(container, StatelessSessionContainerInfo.class);
 
         assertNotNull(myStatelessContainer);
-        assertEquals(containerId, myStatelessContainer.id);
+        assertEquals("MyContainer", myStatelessContainer.id);
         assertEquals("org.acme.SuperContainer", 
myStatelessContainer.className);
         assertNotNull(myStatelessContainer.constructorArgs);
         assertNotNull(myStatelessContainer.properties);
@@ -86,14 +90,12 @@
     public void testConfigureServiceAddedProperty() throws Exception {
         ConfigurationFactory factory = new ConfigurationFactory();
 
-        Properties properties = new Properties();
-        properties.setProperty("anotherProperty", "Cheese is good");
-
-        String containerId = "MyContainer";
-        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(StatelessSessionContainerInfo.class, containerId, 
properties, "org.acme#CheddarContainer", null);
+        Container container = new Container("MyContainer", 
"org.acme#CheddarContainer", "STATELESS");
+        container.getProperties().setProperty("anotherProperty", "Cheese is 
good");
+        StatelessSessionContainerInfo myStatelessContainer = 
factory.configureService(container,  StatelessSessionContainerInfo.class);
 
         assertNotNull(myStatelessContainer);
-        assertEquals(containerId, myStatelessContainer.id);
+        assertEquals("MyContainer", myStatelessContainer.id);
         assertEquals("org.acme.SuperContainer", 
myStatelessContainer.className);
         assertNotNull(myStatelessContainer.constructorArgs);
         assertNotNull(myStatelessContainer.properties);
@@ -103,5 +105,17 @@
         assertEquals("Cheese is good", 
myStatelessContainer.properties.getProperty("anotherProperty"));
     }
 
+    public void testConfigureByType() throws Exception {
+        ConfigurationFactory factory = new ConfigurationFactory();
+
+        Container container = new Container("MyContainer", null, "STATELESS");
+        container.getProperties().setProperty("anotherProperty", "Cheese is 
good");
+        ContainerInfo myStatelessContainer = 
factory.configureService(container,  ContainerInfo.class);
+
+        assertNotNull(myStatelessContainer);
+        assertEquals("org.apache.openejb.core.stateless.StatelessContainer", 
myStatelessContainer.className);
+    }
+
 
 }
+


Reply via email to