Diff
Modified: trunk/core/src/main/java/org/servicemix/jbi/framework/AutoDeploymentService.java (1029 => 1030)
--- trunk/core/src/main/java/org/servicemix/jbi/framework/AutoDeploymentService.java 2005-12-07 09:23:32 UTC (rev 1029)
+++ trunk/core/src/main/java/org/servicemix/jbi/framework/AutoDeploymentService.java 2005-12-07 11:11:40 UTC (rev 1030)
@@ -16,11 +16,7 @@
package org.servicemix.jbi.framework;
import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -32,6 +28,7 @@
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
+
import javax.jbi.JBIException;
import javax.jbi.management.DeploymentException;
import javax.jbi.management.LifeCycleMBean;
@@ -39,6 +36,7 @@
import javax.management.MBeanAttributeInfo;
import javax.resource.spi.work.Work;
import javax.resource.spi.work.WorkException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.servicemix.jbi.config.spring.XBeanProcessor;
@@ -49,9 +47,9 @@
import org.servicemix.jbi.management.AttributeInfoHelper;
import org.servicemix.jbi.management.BaseLifeCycle;
import org.servicemix.jbi.util.FileUtil;
+import org.servicemix.jbi.util.XmlPersistenceSupport;
import org.xbean.spring.context.FileSystemXmlApplicationContext;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
+
import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicBoolean;
/**
@@ -74,7 +72,6 @@
private Timer statsTimer;
private TimerTask timerTask;
private Map pendingSAs=new ConcurrentHashMap();
- private XStream xstream=new XStream(new DomDriver());
private Map installFileMap=null;
private Map deployFileMap=null;
@@ -528,27 +525,19 @@
private void persistState(File root,Map map){
try{
- File file=FileUtil.getDirectoryPath(root,MONITOR_STATE_FILE);
- FileWriter writer=new FileWriter(file);
- ObjectOutputStream out=xstream.createObjectOutputStream(writer,"file-install-times");
- out.writeObject(map);
- out.close();
- writer.close();
+ File file = FileUtil.getDirectoryPath(root,MONITOR_STATE_FILE);
+ XmlPersistenceSupport.write(file, map);
}catch(IOException e){
log.error("Failed to persist file state to: "+root,e);
}
}
private Map readState(File root){
- Map result=new HashMap();
+ Map result = new HashMap();
try{
- File file=FileUtil.getDirectoryPath(root,MONITOR_STATE_FILE);
- if(file.exists()){
- FileReader reader=new FileReader(file);
- ObjectInputStream in=xstream.createObjectInputStream(reader);
- result=(Map) in.readObject();
- in.close();
- reader.close();
+ File file = FileUtil.getDirectoryPath(root,MONITOR_STATE_FILE);
+ if(file.exists()) {
+ result = (Map) XmlPersistenceSupport.read(file);
}else {
log.debug("State file doesn't exist: " + file.getPath());
}
Modified: trunk/core/src/main/java/org/servicemix/jbi/framework/LocalComponentConnector.java (1029 => 1030)
--- trunk/core/src/main/java/org/servicemix/jbi/framework/LocalComponentConnector.java 2005-12-07 09:23:32 UTC (rev 1029)
+++ trunk/core/src/main/java/org/servicemix/jbi/framework/LocalComponentConnector.java 2005-12-07 11:11:40 UTC (rev 1030)
@@ -16,25 +16,22 @@
package org.servicemix.jbi.framework;
import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.util.Properties;
import java.util.Set;
+
import javax.jbi.JBIException;
import javax.jbi.component.Component;
import javax.jbi.component.ComponentLifeCycle;
import javax.jbi.management.LifeCycleMBean;
import javax.jbi.servicedesc.ServiceEndpoint;
import javax.management.ObjectName;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.servicemix.jbi.container.ActivationSpec;
import org.servicemix.jbi.messaging.DeliveryChannelImpl;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
+import org.servicemix.jbi.util.XmlPersistenceSupport;
/**
* ComponentConnector is used internally for message routing
*
@@ -50,7 +47,6 @@
private ObjectName extendedMBeanName;
private ComponentMBeanImpl componentMBean;
private boolean pojo;
- private XStream xstream = new XStream(new DomDriver());
/**
* Default Constructor
@@ -265,15 +261,11 @@
String componentName=getComponentNameSpace().getName();
if(componentMBean!=null){
try{
- String currentState=componentMBean.getCurrentState();
- File stateFile=context.getContainer().getEnvironmentContext().getComponentStateFile(componentName);
- Properties props=new Properties();
- props.setProperty("state",currentState);
- FileWriter writer=new FileWriter(stateFile);
- ObjectOutputStream out=xstream.createObjectOutputStream(writer,"running-state");
- out.writeObject(props);
- out.close();
- writer.close();
+ String currentState = componentMBean.getCurrentState();
+ File stateFile = context.getContainer().getEnvironmentContext().getComponentStateFile(componentName);
+ Properties props = new Properties();
+ props.setProperty("state", currentState);
+ XmlPersistenceSupport.write(stateFile, props);
}catch(IOException e){
log.error("Failed to write current running state for Component: "+componentName,e);
}
@@ -314,13 +306,9 @@
if(componentMBean!=null){
String componentName=getComponentNameSpace().getName();
try{
- File stateFile=context.getContainer().getEnvironmentContext().getComponentStateFile(componentName);
- FileReader reader=new FileReader(stateFile);
- ObjectInputStream in=xstream.createObjectInputStream(reader);
- Properties props=(Properties) in.readObject();
- result=props.getProperty("state",result);
- in.close();
- reader.close();
+ File stateFile = context.getContainer().getEnvironmentContext().getComponentStateFile(componentName);
+ Properties props = (Properties) XmlPersistenceSupport.read(stateFile);
+ result = props.getProperty("state",result);
}catch(Exception e){
log.error("Failed to read running state for Component: "+componentName,e);
}
Modified: trunk/core/src/main/java/org/servicemix/jbi/framework/ServiceAssemblyLifeCycle.java (1029 => 1030)
--- trunk/core/src/main/java/org/servicemix/jbi/framework/ServiceAssemblyLifeCycle.java 2005-12-07 09:23:32 UTC (rev 1029)
+++ trunk/core/src/main/java/org/servicemix/jbi/framework/ServiceAssemblyLifeCycle.java 2005-12-07 11:11:40 UTC (rev 1030)
@@ -16,18 +16,15 @@
package org.servicemix.jbi.framework;
import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.util.Properties;
+
import javax.jbi.management.DeploymentServiceMBean;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.servicemix.jbi.deployment.ServiceAssembly;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
+import org.servicemix.jbi.util.XmlPersistenceSupport;
/**
* ComponentConnector is used internally for message routing
*
@@ -41,7 +38,6 @@
static final String STOPPED=DeploymentServiceMBean.STOPPED;
private ServiceAssembly serviceAssembly;
private String currentState=SHUTDOWN;
- private XStream xstream=new XStream(new DomDriver());
private File stateFile;
/**
@@ -121,14 +117,10 @@
*/
void writeRunningState(){
try{
- String currentState=getCurrentState();
- Properties props=new Properties();
- props.setProperty("state",currentState);
- FileWriter writer=new FileWriter(stateFile);
- ObjectOutputStream out=xstream.createObjectOutputStream(writer,"running-state");
- out.writeObject(props);
- out.close();
- writer.close();
+ String currentState = getCurrentState();
+ Properties props = new Properties();
+ props.setProperty("state", currentState);
+ XmlPersistenceSupport.write(stateFile, props);
}catch(IOException e){
log.error("Failed to write current running state for ServiceAssembly: "+getName(),e);
}
@@ -140,11 +132,8 @@
void getRunningStateFromStore(){
try{
if(stateFile.exists()){
- FileReader reader=new FileReader(stateFile);
- ObjectInputStream in=xstream.createObjectInputStream(reader);
- Properties props=(Properties) in.readObject();
- currentState=props.getProperty("state",SHUTDOWN);
- reader.close();
+ Properties props = (Properties) XmlPersistenceSupport.read(stateFile);
+ currentState = props.getProperty("state",SHUTDOWN);
}
}catch(Exception e){
log.error("Failed to read current running state for ServiceAssembly: "+getName(),e);
Added: trunk/core/src/main/java/org/servicemix/jbi/util/XmlPersistenceSupport.java (1029 => 1030)
--- trunk/core/src/main/java/org/servicemix/jbi/util/XmlPersistenceSupport.java 2005-12-07 09:23:32 UTC (rev 1029)
+++ trunk/core/src/main/java/org/servicemix/jbi/util/XmlPersistenceSupport.java 2005-12-07 11:11:40 UTC (rev 1030)
@@ -0,0 +1,50 @@
+/**
+ * <a href="" The open source ESB</a>
+ *
+ * Copyright 2005 RAJD Consultancy Ltd
+ *
+ * Licensed 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.servicemix.jbi.util;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+public class XmlPersistenceSupport {
+
+ private static XStream xstream = new XStream(new DomDriver());
+
+ public static Object read(File file) throws IOException {
+ Reader r = new FileReader(file);
+ try {
+ return xstream.fromXML(r);
+ } finally {
+ r.close();
+ }
+ }
+
+ public static void write(File file, Object obj) throws IOException {
+ Writer w = new FileWriter(file);
+ try {
+ xstream.toXML(obj, w);
+ } finally {
+ w.close();
+ }
+ }
+
+}