Author: dain
Date: Tue Jun 26 14:31:25 2007
New Revision: 550960

URL: http://svn.apache.org/viewvc?view=rev&rev=550960
Log:
Convert content string into a Properties object using a XmlAdapter
Removed all legacy getFooArray and addFoo methods from JaxB tree

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/PropertiesAdapter.java
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.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/Deploy.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Service.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/Openejb.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServiceProvider.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServicesJar.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
 Tue Jun 26 14:31:25 2007
@@ -173,7 +173,7 @@
         File jar = new File(jarLocation);
 
         /* Check to see if the entry is already listed */
-        for (Deployments d : config.getDeploymentsArray()) {
+        for (Deployments d : config.getDeployments()) {
 
             if (d.getJar() != null) {
                 try {
@@ -214,7 +214,7 @@
         /* Create a new Deployments entry */
         Deployments dep = JaxbOpenejb.createDeployments();
         dep.setJar(jarLocation);
-        config.addDeployments(dep);
+        config.getDeployments().add(dep);
         return true;
     }
 }

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?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
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 Jun 26 14:31:25 2007
@@ -65,9 +65,7 @@
 import org.apache.openejb.util.Messages;
 
 import javax.xml.bind.JAXBException;
-import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -204,8 +202,7 @@
         sys.facilities = new FacilitiesInfo();
 
 
-        for (JndiProvider provider : openejb.getJndiProviderArray()) {
-
+        for (JndiProvider provider : openejb.getJndiProvider()) {
             JndiContextInfo info = configureService(provider, 
JndiContextInfo.class);
             sys.facilities.remoteJndiContexts.add(info);
         }
@@ -215,16 +212,19 @@
         sys.facilities.transactionService = 
configureService(openejb.getTransactionManager(), TransactionServiceInfo.class);
 
         // convert legacy connector declarations to resource declarations
-        for (Connector connector : openejb.getConnectorArray()) {
+        for (Connector connector : openejb.getConnector()) {
             Resource resource = JaxbOpenejb.createResource();
             resource.setJar(connector.getJar());
             resource.setId(connector.getId());
             resource.setProvider(connector.getProvider());
-            resource.setContent(connector.getContent());
-            openejb.addResource(resource);
+
+            resource.getProperties().clear();
+            resource.getProperties().putAll(connector.getProperties());
+
+            openejb.getResource().add(resource);
         }
 
-        for (Resource resource : openejb.getResourceArray()) {
+        for (Resource resource : openejb.getResource()) {
             ResourceInfo resourceInfo = configureService(resource, 
ResourceInfo.class);
             sys.facilities.resources.add(resourceInfo);
         }
@@ -234,8 +234,7 @@
 
         sys.facilities.intraVmServer = 
configureService(openejb.getProxyFactory(), ProxyFactoryInfo.class);
 
-        for (Container declaration : openejb.getContainerArray()) {
-
+        for (Container declaration : openejb.getContainer()) {
             Class<? extends ContainerInfo> infoClass = 
getContainerInfoType(declaration.getCtype());
 
             if (infoClass == null) {
@@ -248,8 +247,7 @@
         }
 
 
-        List<String> jarList = 
DeploymentsResolver.resolveAppLocations(openejb.getDeploymentsArray());
-
+        List<String> jarList = 
DeploymentsResolver.resolveAppLocations(openejb.getDeployments());
         for (String pathname : jarList) {
 
             try {
@@ -271,12 +269,8 @@
 
         AppInfo appInfo = null;
         try {
-
             AppModule appModule = deploymentLoader.load(jarFile);
-
             appInfo = configureApplication(appModule);
-
-
         } catch (OpenEJBException e) {
             String message = messages.format("conf.0004", 
jarFile.getAbsolutePath(), e.getMessage());
             // DO NOT REMOVE THE EXCEPTION FROM THIS LOG MESSAGE
@@ -343,7 +337,6 @@
         JndiEncInfoBuilder.initJndiReferences(appModule, appInfo);
 
         for (ClientModule clientModule : appModule.getClientModules()) {
-
             ApplicationClient applicationClient = 
clientModule.getApplicationClient();
             ClientInfo clientInfo = new ClientInfo();
             clientInfo.description = applicationClient.getDescription();
@@ -467,7 +460,8 @@
             return configureService(type);
         }
 
-        Properties declaredProperties = getDeclaredProperties(service);
+        Properties declaredProperties = new Properties();
+        declaredProperties.putAll(service.getProperties());
 
         return configureService(type, service.getId(), declaredProperties, 
service.getProvider(), service.getClass().getSimpleName());
     }
@@ -510,9 +504,8 @@
         }
 
         logger.info("Configuring Service(id=" + serviceId + ", type=" + 
provider.getProviderType() + ", provider-id=" + provider.getId() + ")");
-        Properties props = getDefaultProperties(provider);
-
-
+        Properties props = new Properties();
+        props.putAll(provider.getProperties());
         props.putAll(declaredProperties);
 
         Properties serviceProperties = getSystemProperties(serviceId);
@@ -568,56 +561,6 @@
         return serviceProperties;
     }
 
-    private Properties getDeclaredProperties(Service service) throws 
OpenEJBException {
-        /* 3. Load properties from the content in the Container
-        *    element of the configuration file.
-        */
-        Properties declaredProperties = new Properties();
-        try {
-            if (service.getContent() != null) {
-                String content = service.getContent();
-                ByteArrayInputStream in = new 
ByteArrayInputStream(content.getBytes());
-
-                try {
-                    declaredProperties.load(in);
-                } catch (IOException ex) {
-                    throw new 
OpenEJBException(ServiceUtils.messages.format("conf.0012", 
ex.getLocalizedMessage()), ex);
-                }
-
-            }
-        } catch (OpenEJBException ex) {
-            throw new 
OpenEJBException(ServiceUtils.messages.format("conf.0014", 
service.getClass().getSimpleName(), service.getId(), configLocation, 
ex.getLocalizedMessage()), ex);
-        }
-        return declaredProperties;
-    }
-
-    private Properties getDefaultProperties(ServiceProvider provider) throws 
OpenEJBException {
-        Properties props = new Properties();
-
-        try {
-            /*
-            * 2. Load properties from the content in the service provider
-            *    element of the service-jar.xml
-            */
-
-            if (provider.getContent() != null) {
-                String content = provider.getContent();
-
-                ByteArrayInputStream in = new 
ByteArrayInputStream(content.getBytes());
-
-                try {
-                    props.load(in);
-                } catch (IOException ex) {
-                    throw new 
OpenEJBException(ServiceUtils.messages.format("conf.0012", 
ex.getLocalizedMessage()), ex);
-                }
-
-            }
-        } catch (OpenEJBException ex) {
-            throw new 
OpenEJBException(ServiceUtils.messages.format("conf.0013", provider.getId(), 
null, ex.getLocalizedMessage()), ex);
-        }
-        return props;
-    }
-
     static Map<String, Class<? extends ContainerInfo>> containerTypes = new 
HashMap<String, Class<? extends ContainerInfo>>();
 
     static {
@@ -665,8 +608,8 @@
             // The only time we'd have one of these is if we were building
             // the above sys instance
             if (openejb != null) {
-                for (Resource resource : openejb.getResourceArray()) {
-                    if (isResourceType(resource, type)) {
+                for (Resource resource : openejb.getResource()) {
+                    if (isResourceType(resource.getProperties(), type)) {
                         resourceIds.add(resource.getId());
                     }
                 }
@@ -687,24 +630,6 @@
         return false;
     }
 
-    private static boolean isResourceType(Resource resource, String type) {
-        if (type == null) return true;
-
-        Properties properties = new Properties();
-        if (resource.getContent() != null) {
-            String content = resource.getContent();
-            ByteArrayInputStream in = new 
ByteArrayInputStream(content.getBytes());
-
-            try {
-                properties.load(in);
-            } catch (IOException ex) {
-            }
-
-        }
-
-        return isResourceType(properties, type);
-    }
-
     protected List<String> getContainerIds() {
         List<String> containerIds = new ArrayList<String>();
 
@@ -723,7 +648,7 @@
             // The only time we'd have one of these is if we were building
             // the above sys instance
             if (openejb != null) {
-                for (Container container : openejb.getContainerArray()) {
+                for (Container container : openejb.getContainer()) {
                     containerIds.add(container.getId());
                 }
             }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java
 Tue Jun 26 14:31:25 2007
@@ -16,37 +16,6 @@
  */
 package org.apache.openejb.config;
 
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.PrintStream;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.ejb.Stateless;
-
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.jee.oejb3.EjbDeployment;
-import org.apache.openejb.jee.oejb3.MethodParams;
-import org.apache.openejb.jee.oejb3.OpenejbJar;
-import org.apache.openejb.jee.oejb3.QueryMethod;
-import org.apache.openejb.jee.oejb3.ResourceLink;
-import org.apache.openejb.config.sys.Openejb;
-import org.apache.openejb.config.sys.Connector;
-import org.apache.openejb.config.sys.Container;
-import org.apache.openejb.config.sys.JaxbOpenejb;
-import org.apache.openejb.jee.ResourceRef;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.JarUtils;
-import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.Messages;
-import org.apache.openejb.util.SafeToolkit;
-import org.apache.openejb.util.OpenEjbVersion;
-
 /**
  * Deploy EJB beans
  */

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 Tue Jun 26 14:31:25 2007
@@ -26,7 +26,6 @@
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -40,7 +39,7 @@
     private static final String CLASSPATH_EXCLUDE = 
"openejb.deployments.classpath.exclude";
     private static final String CLASSPATH_REQUIRE_DESCRIPTOR = 
"openejb.deployments.classpath.require.descriptor";
 
-    private static void loadFrom(Deployments dep, FileUtils path, List 
jarList) {
+    private static void loadFrom(Deployments dep, FileUtils path, List<String> 
jarList) {
 
         ////////////////////////////////
         //
@@ -113,8 +112,9 @@
         }
     }
 
-    public static List<String> resolveAppLocations(Deployments... 
deploymentsArray) {
-        List<Deployments> deployments = new 
ArrayList<Deployments>(Arrays.asList(deploymentsArray));
+    public static List<String> resolveAppLocations(List<Deployments> 
deployments) {
+        // make a copy of the list because we update it
+        deployments = new ArrayList<Deployments>(deployments);
 
         //// getOption /////////////////////////////////  BEGIN  
////////////////////
         String flag = 
SystemInstance.get().getProperty("openejb.deployments.classpath", 
"true").toLowerCase();
@@ -130,7 +130,7 @@
 
         FileUtils base = SystemInstance.get().getBase();
 
-        List<String> jarList = new ArrayList(deployments.size());
+        List<String> jarList = new ArrayList<String>(deployments.size());
         try {
             for (Deployments deployment : deployments) {
                 if (deployment.getClasspath() != null) {
@@ -139,9 +139,9 @@
                     loadFrom(deployment, base, jarList);
                 }
             }
-        } catch (SecurityException se) {
-
+        } catch (SecurityException ignored) {
         }
+
         return jarList;
     }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Service.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Service.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Service.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Service.java
 Tue Jun 26 14:31:25 2007
@@ -16,10 +16,28 @@
  */
 package org.apache.openejb.config;
 
-public interface Service {
-    public String getContent();
+import java.util.Properties;
 
-    public void setContent(String content);
+public interface Service {
+    /**
+     * Gets the value of the properties property.
+     * <p/>
+     * <p/>
+     * This accessor method returns a reference to the live Properties Object,
+     * not a snapshot. Therefore any modification you make to the
+     * returned Properties will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the properties 
property.
+     * <p/>
+     * <p/>
+     * For example, to add a new value, do as follows:
+     * <pre>
+     *    getProperties().setProperty(key, value);
+     * </pre>
+     * <p/>
+     * <p/>
+     * <p/>
+     */
+    public Properties getProperties();
 
     public String getId();
 

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?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
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 Jun 26 14:31:25 2007
@@ -31,6 +31,7 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
+import java.util.List;
 
 public class ServiceUtils {
     public static final String defaultProviderURL = "org.apache.openejb";
@@ -88,8 +89,8 @@
             ServicesJar servicesJar = JaxbOpenejb.readServicesJar(packageName);
 
             // index services by provider id
-            ServiceProvider[] serviceProviders = 
servicesJar.getServiceProviderArray();
-            services = new HashMap<String, 
ServiceProvider>(serviceProviders.length);
+            List<ServiceProvider> serviceProviders = 
servicesJar.getServiceProvider();
+            services = new HashMap<String, 
ServiceProvider>(serviceProviders.size());
             for (ServiceProvider serviceProvider : serviceProviders) {
                 services.put(serviceProvider.getId(), serviceProvider);
 

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?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
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 Jun 26 14:31:25 2007
@@ -24,6 +24,8 @@
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.util.Properties;
 
 /**
  * <p>Java class for Service complex type.
@@ -46,7 +48,8 @@
 @XmlType(name = "Service")
 public abstract class AbstractService implements Service {
     @XmlValue
-    protected String content;
+    @XmlJavaTypeAdapter(PropertiesAdapter.class)
+    protected Properties properties;
     @XmlAttribute(required = true)
     protected String id;
     @XmlAttribute
@@ -54,24 +57,30 @@
     @XmlAttribute
     protected String provider;
 
-    /**
-     * Gets the value of the value property.
-     *
-     * @return possible object is
-     *         [EMAIL PROTECTED] String }
-     */
-    public String getContent() {
-        return content;
-    }
 
     /**
-     * Sets the value of the value property.
-     *
-     * @param content allowed object is
-     *                [EMAIL PROTECTED] String }
+     * Gets the value of the properties property.
+     * <p/>
+     * <p/>
+     * This accessor method returns a reference to the live Properties Object,
+     * not a snapshot. Therefore any modification you make to the
+     * returned Properties will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the properties 
property.
+     * <p/>
+     * <p/>
+     * For example, to add a new value, do as follows:
+     * <pre>
+     *    getProperties().setProperty(key, value);
+     * </pre>
+     * <p/>
+     * <p/>
+     * <p/>
      */
-    public void setContent(String content) {
-        this.content = content;
+    public Properties getProperties() {
+        if (properties == null) {
+            properties = new Properties();
+        }
+        return properties;
     }
 
     /**

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
 Tue Jun 26 14:31:25 2007
@@ -289,76 +289,4 @@
         }
         return this.deployments;
     }
-
-
-    /**
-     * @deprecated use collections version
-     */
-    public void addConnector(Connector connector) throws 
IndexOutOfBoundsException {
-        this.connector.add(connector);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public Connector[] getConnectorArray() {
-        return getConnector().toArray(new Connector[connector.size()]);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public void addContainer(Container container) throws 
IndexOutOfBoundsException {
-        this.container.add(container);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public Container[] getContainerArray() {
-        return getContainer().toArray(new Container[container.size()]);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public void addDeployments(Deployments deployments) throws 
IndexOutOfBoundsException {
-        this.deployments.add(deployments);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public Deployments[] getDeploymentsArray() {
-        return getDeployments().toArray(new Deployments[deployments.size()]);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public void addJndiProvider(JndiProvider jndiProvider) throws 
IndexOutOfBoundsException {
-        this.jndiProvider.add(jndiProvider);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public JndiProvider[] getJndiProviderArray() {
-        return getJndiProvider().toArray(new 
JndiProvider[jndiProvider.size()]);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public void addResource(Resource resource) throws 
IndexOutOfBoundsException {
-        this.resource.add(resource);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public Resource[] getResourceArray() {
-        return getResource().toArray(new Resource[resource.size()]);
-    }
-
 }

Added: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/PropertiesAdapter.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/PropertiesAdapter.java?view=auto&rev=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/PropertiesAdapter.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/PropertiesAdapter.java
 Tue Jun 26 14:31:25 2007
@@ -0,0 +1,42 @@
+/**
+ *
+ * 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.config.sys;
+
+import org.apache.activemq.util.ByteArrayOutputStream;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import java.io.ByteArrayInputStream;
+import java.util.Properties;
+
+/**
+ * Converts a java.util.Properties object to a String in the XML file.
+ */
+public class PropertiesAdapter extends XmlAdapter<String, Properties> {
+    public Properties unmarshal(String s) throws Exception {
+        Properties properties = new Properties();
+        ByteArrayInputStream in = new ByteArrayInputStream(s.getBytes());
+        properties.load(in);
+        return properties;
+    }
+
+    public String marshal(Properties properties) throws Exception {
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        properties.store(out, null);
+        return new String(out.toByteArray());
+    }
+}

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServiceProvider.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServiceProvider.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServiceProvider.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServiceProvider.java
 Tue Jun 26 14:31:25 2007
@@ -23,6 +23,8 @@
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.util.Properties;
 
 
 /**
@@ -52,7 +54,8 @@
 public class ServiceProvider {
 
     @XmlValue
-    protected String content;
+    @XmlJavaTypeAdapter(PropertiesAdapter.class)
+    protected Properties properties;
     @XmlAttribute(name = "class-name")
     protected String className;
     @XmlAttribute(name = "constructor")
@@ -69,23 +72,28 @@
     protected String providerType;
 
     /**
-     * Gets the value of the value property.
-     *
-     * @return possible object is
-     *         [EMAIL PROTECTED] String }
+     * Gets the value of the properties property.
+     * <p/>
+     * <p/>
+     * This accessor method returns a reference to the live Properties Object,
+     * not a snapshot. Therefore any modification you make to the
+     * returned Properties will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the properties 
property.
+     * <p/>
+     * <p/>
+     * For example, to add a new value, do as follows:
+     * <pre>
+     *    getProperties().setProperty(key, value);
+     * </pre>
+     * <p/>
+     * <p/>
+     * <p/>
      */
-    public String getContent() {
-        return content;
-    }
-
-    /**
-     * Sets the value of the value property.
-     *
-     * @param content allowed object is
-     *                [EMAIL PROTECTED] String }
-     */
-    public void setContent(String content) {
-        this.content = content;
+    public Properties getProperties() {
+        if (properties == null) {
+            properties = new Properties();
+        }
+        return properties;
     }
 
     /**

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServicesJar.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServicesJar.java?view=diff&rev=550960&r1=550959&r2=550960
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServicesJar.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServicesJar.java
 Tue Jun 26 14:31:25 2007
@@ -77,15 +77,4 @@
         }
         return this.serviceProvider;
     }
-
-    public void addServiceProvider(ServiceProvider serviceProvider) throws 
IndexOutOfBoundsException {
-        this.serviceProvider.add(serviceProvider);
-    }
-
-    /**
-     * @deprecated use collections version
-     */
-    public ServiceProvider[] getServiceProviderArray() {
-        return getServiceProvider().toArray(new 
ServiceProvider[serviceProvider.size()]);
-    }
 }


Reply via email to