You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jb...@apache.org on 2003/08/15 17:27:42 UTC
cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/service ClassSpaceMetadataXMLLoader.java ServiceDeploymentPlanner.java
jboynes 2003/08/15 08:27:42
Modified: modules/core/src/java/org/apache/geronimo/deployment/service
ClassSpaceMetadataXMLLoader.java
ServiceDeploymentPlanner.java
Log:
Support deployment of unpacked service archives
Revision Changes Path
1.3 +8 -2 incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/service/ClassSpaceMetadataXMLLoader.java
Index: ClassSpaceMetadataXMLLoader.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/service/ClassSpaceMetadataXMLLoader.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ClassSpaceMetadataXMLLoader.java 12 Aug 2003 07:10:16 -0000 1.2
+++ ClassSpaceMetadataXMLLoader.java 15 Aug 2003 15:27:42 -0000 1.3
@@ -79,6 +79,12 @@
* @version $Revision$ $Date$
*/
public class ClassSpaceMetadataXMLLoader {
+ private final URL baseURL;
+
+ public ClassSpaceMetadataXMLLoader(URL baseURL) {
+ this.baseURL = baseURL;
+ }
+
public ClassSpaceMetadata loadXML(Element element) throws DeploymentException {
ClassSpaceMetadata md = new ClassSpaceMetadata();
try {
@@ -92,7 +98,7 @@
for (int i = 0; i < nl.getLength(); i++) {
Element codebaseElement = (Element) nl.item(i);
URL codebase;
- codebase = new URL(codebaseElement.getAttribute("url"));
+ codebase = new URL(baseURL, codebaseElement.getAttribute("url"));
NodeList archiveNodes = codebaseElement.getElementsByTagName("archive");
if (archiveNodes.getLength() == 0) {
// no archives present, use codebase itself
1.3 +28 -7 incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/service/ServiceDeploymentPlanner.java
Index: ServiceDeploymentPlanner.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/service/ServiceDeploymentPlanner.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServiceDeploymentPlanner.java 14 Aug 2003 00:02:43 -0000 1.2
+++ ServiceDeploymentPlanner.java 15 Aug 2003 15:27:42 -0000 1.3
@@ -56,6 +56,7 @@
package org.apache.geronimo.deployment.service;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.util.Collection;
import java.util.HashSet;
@@ -77,6 +78,7 @@
import javax.xml.parsers.ParserConfigurationException;
import org.apache.geronimo.deployment.DeploymentException;
+import org.apache.geronimo.deployment.scanner.URLType;
import org.apache.geronimo.deployment.goal.DeployURL;
import org.apache.geronimo.deployment.goal.DeploymentGoal;
import org.apache.geronimo.deployment.goal.RedeployURL;
@@ -105,7 +107,6 @@
private RelationServiceMBean relationService;
private final DocumentBuilder parser;
private final MBeanMetadataXMLLoader mbeanLoader;
- private final ClassSpaceMetadataXMLLoader classSpaceLoader;
public ServiceDeploymentPlanner() {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
@@ -115,7 +116,6 @@
throw new AssertionError("No XML parser available");
}
mbeanLoader = new MBeanMetadataXMLLoader();
- classSpaceLoader = new ClassSpaceMetadataXMLLoader();
}
public ObjectName preRegister(MBeanServer mBeanServer, ObjectName objectName) throws Exception {
@@ -161,14 +161,34 @@
}
private boolean addURL(DeployURL goal, Set goals, Set plans) throws DeploymentException {
+ InputStream is;
URL url = goal.getUrl();
- if (!url.getPath().endsWith("-service.xml")) {
+ URLType type = goal.getType();
+ if (type == URLType.RESOURCE) {
+ if (!url.getPath().endsWith("-service.xml")) {
+ return false;
+ }
+ try {
+ is = url.openConnection().getInputStream();
+ } catch (IOException e) {
+ throw new DeploymentException(e);
+ }
+ } else if (type == URLType.UNPACKED_ARCHIVE) {
+ try {
+ URL serviceURL = new URL(url, "META-INF/geronimo-service.xml");
+ is = serviceURL.openConnection().getInputStream();
+ } catch (IOException e) {
+ // assume resource does not exist
+ return false;
+ }
+ } else {
return false;
}
+
Document doc;
try {
- doc = parser.parse(url.toString());
+ doc = parser.parse(is);
} catch (SAXException e) {
throw new DeploymentException(e);
} catch (IOException e) {
@@ -185,7 +205,7 @@
ServiceDeployment serviceInfo = new ServiceDeployment(deploymentName, null, url);
createPlan.addTask(new RegisterMBeanInstance(server, deploymentName, serviceInfo));
- ObjectName loaderName = addClassSpaces(doc.getElementsByTagName("class-space"), createPlan);
+ ObjectName loaderName = addClassSpaces(doc.getElementsByTagName("class-space"), createPlan, url);
NodeList nl = doc.getElementsByTagName("mbean");
for (int i = 0; i < nl.getLength(); i++) {
@@ -204,12 +224,13 @@
return true;
}
- private ObjectName addClassSpaces(NodeList nl, DeploymentPlan plan) throws DeploymentException {
+ private ObjectName addClassSpaces(NodeList nl, DeploymentPlan plan, URL baseURL) throws DeploymentException {
Element classSpaceElement = (Element) nl.item(0);
if (classSpaceElement == null) {
return null;
}
+ ClassSpaceMetadataXMLLoader classSpaceLoader = new ClassSpaceMetadataXMLLoader(baseURL);
ClassSpaceMetadata md = classSpaceLoader.loadXML(classSpaceElement);
CreateClassSpace createTask = new CreateClassSpace(server, md);
plan.addTask(createTask);