You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/05/23 11:03:44 UTC
svn commit: r1341801 -
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
Author: rmannibucau
Date: Wed May 23 09:03:43 2012
New Revision: 1341801
URL: http://svn.apache.org/viewvc?rev=1341801&view=rev
Log:
OPENEJB-1835 import in openejb.xml or tomee.xml
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java?rev=1341801&r1=1341800&r2=1341801&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java Wed May 23 09:03:43 2012
@@ -16,6 +16,13 @@
*/
package org.apache.openejb.config.sys;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.config.Service;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
@@ -117,6 +124,7 @@ class SaxOpenejb extends DefaultHandler
else if (localName.equals("Resource")) push(new ResourceElement());
else if (localName.equals("Connector")) push(new ResourceElement());
else if (localName.equals("Deployments")) push(new DeploymentsElement());
+ else if (localName.equals("Import")) push(new ImportElement());
else throw new IllegalStateException("Unsupported Element: " + localName);
get().startElement(uri, localName, qName, attributes);
}
@@ -279,4 +287,74 @@ class SaxOpenejb extends DefaultHandler
}
}
+ private class ImportElement extends DefaultHandler {
+ private String path = null;
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ path = attributes.getValue("path");
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+ if (path != null) {
+ InputStream is = null;
+ try {
+ final URL url = new URL(path);
+ is = url.openStream();
+ } catch (MalformedURLException e) {
+ final File file = new File(path);
+ try {
+ is = new FileInputStream(file);
+ } catch (FileNotFoundException e1) {
+ throw new SAXException("specified path '" + path + "' is neither an url nor a file path", e);
+ }
+ } catch (IOException e) {
+ throw new SAXException(e);
+ }
+
+ try {
+ final Openejb importedOpenEJB = parse(new InputSource(is));
+ merge(openejb, importedOpenEJB);
+ } catch (ParserConfigurationException e) {
+ throw new SAXException(e);
+ } catch (IOException e) {
+ throw new SAXException(e);
+ }
+ }
+ }
+
+ private void merge(final Openejb openejb, final Openejb importedOpenEJB) {
+ if (importedOpenEJB.container != null) {
+ for (Container container : importedOpenEJB.container) {
+ openejb.add(container);
+ }
+ }
+ if (importedOpenEJB.jndiProvider != null) {
+ for (JndiProvider jndiProvider : importedOpenEJB.jndiProvider) {
+ openejb.add(jndiProvider);
+ }
+ }
+ if (importedOpenEJB.securityService != null
+ || importedOpenEJB.transactionManager != null
+ || importedOpenEJB.connectionManager != null
+ || importedOpenEJB.proxyFactory != null) {
+ // do nothing, these are unique so i don't think importing it is a good idea
+ }
+ if (importedOpenEJB.connector != null) {
+ for (Connector connector : importedOpenEJB.connector) {
+ openejb.add(connector);
+ }
+ }
+ if (importedOpenEJB.resource != null) {
+ for (Resource resource : importedOpenEJB.resource) {
+ openejb.add(resource);
+ }
+ }
+ if (importedOpenEJB.deployments != null) {
+ for (Deployments deployment : importedOpenEJB.deployments) {
+ openejb.add(deployment);
+ }
+ }
+ }
+ }
}