You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by jo...@apache.org on 2001/10/13 01:56:33 UTC
cvs commit: jakarta-turbine-fulcrum/src/services/java/org/apache/fulcrum/intake TurbineIntakeService.java
jon 01/10/12 16:56:33
Modified: src/services/java/org/apache/fulcrum/intake
TurbineIntakeService.java
Log:
make sure to close a stream
methodize the writeAppData code so that it can be reused internally. this
is to get around a possible exception that i just ran into:
2001-10-12 16:25:53,292 [HttpProcessor[8080][0]] ERROR
org.apache.fulcrum.Turbin
eServices - Could not instantiate tool org.apache.turbine.tool.IntakeTool
to add
to the context
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:158)
at
java.io.ObjectInputStream.readFully(ObjectInputStream.java:2071)
at
java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:225
2)
at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:51
9)
at java.util.ArrayList.readObject(ArrayList.java:523)
at java.lang.reflect.Method.invoke(Native Method)
at
java.io.ObjectInputStream.invokeObjectReader(ObjectInputStream.java:2
214)
at
java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at
java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:226
3)
at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:51
9)
at
org.apache.fulcrum.intake.xmlmodel.XmlField.readObject(XmlField.java:
556)
at java.lang.reflect.Method.invoke(Native Method)
at
java.io.ObjectInputStream.invokeObjectReader(ObjectInputStream.java:2
214)
at
java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
at java.util.ArrayList.readObject(ArrayList.java:531)
at java.lang.reflect.Method.invoke(Native Method)
at
java.io.ObjectInputStream.invokeObjectReader(ObjectInputStream.java:2
214)
at
java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at
java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:226
3)
at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:51
9)
at
java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
at java.util.ArrayList.readObject(ArrayList.java:531)
at java.lang.reflect.Method.invoke(Native Method)
at
java.io.ObjectInputStream.invokeObjectReader(ObjectInputStream.java:2
214)
at
java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at
java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:226
3)
at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:51
9)
at
java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
at
org.apache.fulcrum.intake.TurbineIntakeService.init(TurbineIntakeServ
ice.java:166)
at
org.apache.fulcrum.BaseServiceBroker.getService(BaseServiceBroker.jav
a:630)
at
org.apache.fulcrum.intake.TurbineIntake.getService(TurbineIntake.java
:253)
at
org.apache.fulcrum.intake.TurbineIntake.getGroupNames(TurbineIntake.j
ava:196)
at org.apache.fulcrum.intake.Intake.<init>(Intake.java:97)
at org.apache.turbine.tool.IntakeTool.<init>(IntakeTool.java:72)
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Class.java:237)
at
org.apache.fulcrum.factory.TurbineFactoryService.getInstance(TurbineF
actoryService.java:396)
at
org.apache.fulcrum.factory.TurbineFactoryService.getInstance(TurbineF
actoryService.java:214)
at
org.apache.fulcrum.pool.TurbinePoolService.getInstance(TurbinePoolSer
vice.java:390)
at
org.apache.turbine.services.pull.TurbinePullService.populateWithReque
stTools(TurbinePullService.java:467)
at
org.apache.turbine.services.pull.TurbinePullService.populateContext(T
urbinePullService.java:393)
at
org.apache.turbine.services.pull.TurbinePullService.getRuntimeContext
(TurbinePullService.java:367)
at
org.apache.turbine.services.pull.TurbinePull.getRuntimeContext(Turbin
ePull.java:107)
at
org.apache.turbine.modules.Module.getTemplateContext(Module.java:150)
at
org.tigris.scarab.pages.ScarabPage.preExecuteAction(ScarabPage.java:8
2)
at org.apache.turbine.Turbine.doGet(Turbine.java:265)
Revision Changes Path
1.3 +55 -30 jakarta-turbine-fulcrum/src/services/java/org/apache/fulcrum/intake/TurbineIntakeService.java
Index: TurbineIntakeService.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-fulcrum/src/services/java/org/apache/fulcrum/intake/TurbineIntakeService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TurbineIntakeService.java 2001/09/29 00:46:29 1.2
+++ TurbineIntakeService.java 2001/10/12 23:56:33 1.3
@@ -87,7 +87,7 @@
* on an XML specification.
*
* @author <a href="mailto:jmcnally@collab.net">John McNally</a>
- * @version $Id: TurbineIntakeService.java,v 1.2 2001/09/29 00:46:29 jon Exp $
+ * @version $Id: TurbineIntakeService.java,v 1.3 2001/10/12 23:56:33 jon Exp $
*/
public class TurbineIntakeService
extends BaseService
@@ -161,51 +161,30 @@
if ( serialAppData.exists()
&& serialAppData.lastModified() > xmlFile.lastModified() )
{
- InputStream in = new FileInputStream(serialAppData);
- ObjectInputStream p = new ObjectInputStream(in);
- appData = (AppData)p.readObject();
- in.close();
- }
- else
- {
- XmlToAppData xmlApp = new XmlToAppData();
- appData = xmlApp.parseFile(xmlPath);
- OutputStream out = null;
InputStream in = null;
try
{
- // write the appData file out
- out = new FileOutputStream(serialAppData);
- ObjectOutputStream p = new ObjectOutputStream(out);
- p.writeObject(appData);
- p.flush();
-
- // read the file back in. for some reason on OSX 10.1
- // this is necessary.
in = new FileInputStream(serialAppData);
- ObjectInputStream pin = new ObjectInputStream(in);
- appData = (AppData)pin.readObject();
+ ObjectInputStream p = new ObjectInputStream(in);
+ appData = (AppData)p.readObject();
}
catch (Exception e)
{
- getCategory().info(
- "Intake initialization could not be serialized " +
- "because writing to " + appDataPath + " was not " +
- "allowed. This will require that the xml file be " +
- "parsed when restarting the application.");
+ // We got a corrupt file for some reason
+ writeAppData(xmlPath, appDataPath, serialAppData);
}
finally
{
- if (out != null)
- {
- out.close();
- }
if (in != null)
{
in.close();
}
}
}
+ else
+ {
+ writeAppData(xmlPath, appDataPath, serialAppData);
+ }
groupNames = new String[appData.getGroups().size()];
groupKeyMap = new HashMap();
@@ -243,6 +222,52 @@
{
throw new InitializationException(
"TurbineIntakeService failed to initialize", e);
+ }
+ }
+
+ /**
+ * This method writes the appData file into Objects and stores
+ * the information into this classes appData property
+ */
+ private void writeAppData(String xmlPath, String appDataPath, File serialAppData)
+ throws Exception
+ {
+ XmlToAppData xmlApp = new XmlToAppData();
+ appData = xmlApp.parseFile(xmlPath);
+ OutputStream out = null;
+ InputStream in = null;
+ try
+ {
+ // write the appData file out
+ out = new FileOutputStream(serialAppData);
+ ObjectOutputStream p = new ObjectOutputStream(out);
+ p.writeObject(appData);
+ p.flush();
+
+ // read the file back in. for some reason on OSX 10.1
+ // this is necessary.
+ in = new FileInputStream(serialAppData);
+ ObjectInputStream pin = new ObjectInputStream(in);
+ appData = (AppData)pin.readObject();
+ }
+ catch (Exception e)
+ {
+ getCategory().info(
+ "Intake initialization could not be serialized " +
+ "because writing to " + appDataPath + " was not " +
+ "allowed. This will require that the xml file be " +
+ "parsed when restarting the application.");
+ }
+ finally
+ {
+ if (out != null)
+ {
+ out.close();
+ }
+ if (in != null)
+ {
+ in.close();
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org