001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.deployment;
023:
024: // $Id: SerializableDeploymentInfo.java 57205 2006-09-26 12:23:56Z dimitris@jboss.org $
025:
026: import javax.management.ObjectName;
027: import java.io.Serializable;
028: import java.net.URL;
029: import java.util.ArrayList;
030: import java.util.Collection;
031: import java.util.Date;
032: import java.util.List;
033:
034: /**
035: * DeploymentInfo for remote access by the DeploymentManager.
036: * It provides a serializable subset of the information available in DeploymentInfo.
037: *
038: * @author thomas.diesler@jboss.org
039: * @version $Revision: 57205 $
040: */
041: public class SerializableDeploymentInfo implements Serializable {
042: /** @since 4.0.2 */
043: private static final long serialVersionUID = -3847995513551913798L;
044:
045: // The initial construction timestamp
046: public Date date;
047: // The URL identifing this SDI
048: public URL url;
049: // An optional URL to a local copy of the deployment
050: public URL localUrl;
051: // The URL used to watch for changes when the deployment is unpacked
052: public URL watch;
053: // The suffix of the deployment url
054: public String shortName;
055: // The last system time the deployment inited by the MainDeployer
056: public long lastDeployed;
057: // Use for "should we redeploy failed"
058: public long lastModified;
059: // A free form status for the "state" can be Deployed/failed etc etc
060: public String status;
061: // The current state of the deployment
062: public DeploymentState state;
063: // The subdeployer that handles the deployment
064: public ObjectName deployer;
065: // The classpath declared by this xml descriptor, needs <classpath> entry
066: public Collection classpath = new ArrayList();
067: // The mbeans deployed
068: public List mbeans;
069: // Anyone can have subdeployments
070: public List subDeployments;
071: // And the subDeployments have a parent
072: public SerializableDeploymentInfo parent;
073: // the web root context in case of war file
074: public String webContext;
075: // An optional URL to the URL of the document loaded
076: public URL documentUrl;
077: // Is this a stand-alone service descriptor
078: public boolean isXML;
079: public boolean isScript;
080: // Does the deployment url point to a directory
081: public boolean isDirectory;
082: // Can contain the MBean that is created through the deployment
083: public ObjectName deployedObject;
084:
085: // Constructors *****************************************************************************************************
086:
087: /**
088: * Construct this object from a DeploymentInfo
089: */
090: public SerializableDeploymentInfo(DeploymentInfo info) {
091: this .date = info.date;
092: this .url = info.url;
093: this .localUrl = info.localUrl;
094: this .watch = info.watch;
095: this .shortName = info.shortName;
096: this .lastDeployed = info.lastDeployed;
097: this .lastModified = info.lastModified;
098: this .status = info.status;
099: this .state = info.state;
100: this .deployer = info.deployer.getServiceName();
101: this .classpath = info.classpath;
102: this .mbeans = info.mbeans;
103: this .webContext = info.webContext;
104: this .documentUrl = info.documentUrl;
105: this .isXML = info.isXML;
106: this .isScript = info.isScript;
107: this .isDirectory = info.isDirectory;
108: this .deployedObject = info.deployedObject;
109:
110: // we do these in a second iteration
111: this .parent = null;
112: this .subDeployments = new ArrayList();
113: }
114:
115: /**
116: * Returns a string representation of the object.
117: */
118: public String toString() {
119: StringBuffer s = new StringBuffer(super .toString());
120: s.append(" { url=" + url + " }\n");
121: s.append(" deployer: " + deployer + "\n");
122: s.append(" status: " + status + "\n");
123: s.append(" state: " + state + "\n");
124: s.append(" watch: " + watch + "\n");
125: s.append(" lastDeployed: " + lastDeployed + "\n");
126: s.append(" lastModified: " + lastModified + "\n");
127: s.append(" mbeans: " + mbeans + "\n");
128: s.append(" }\n");
129: return s.toString();
130: }
131: }
|