1
24 package net.sf.jasperreports.repo;
25
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.io.OutputStream;
29 import java.io.Serializable;
30
31 import net.sf.jasperreports.engine.JRException;
32 import net.sf.jasperreports.engine.JRRuntimeException;
33 import net.sf.jasperreports.engine.util.JRLoader;
34 import net.sf.jasperreports.engine.util.JRSaver;
35
36
37
40 public class SerializedObjectPersistenceService implements PersistenceService
41 {
42
43 @Override
44 public Resource load(String uri, RepositoryService repositoryService)
45 {
46 return load(null, uri, repositoryService);
47 }
48
49 @Override
50 public Resource load(RepositoryContext context, String uri, RepositoryService repositoryService)
51 {
52 SerializableResource<Serializable> resource = null;
53
54 InputStreamResource isResource = repositoryService.getResource(context, uri, InputStreamResource.class);
55
56 InputStream is = isResource == null ? null : isResource.getInputStream();
57 if (is != null)
58 {
59 resource = new SerializableResource<Serializable>();
60 try
61 {
62 resource.setValue((Serializable)JRLoader.loadObject(is));
63 }
64 catch (JRException e)
65 {
66 throw new JRRuntimeException(e);
67 }
68 finally
69 {
70 try
71 {
72 is.close();
73 }
74 catch (IOException e)
75 {
76 }
77 }
78 }
79
80 return resource;
81 }
82
83 @Override
84 public void save(Resource resource, String uri, RepositoryService repositoryService)
85 {
86 @SuppressWarnings("unchecked")
87 ObjectResource<Object> objectResource = (ObjectResource<Object>)resource;
88
89 OutputStreamResource osResource = repositoryService.getResource(uri, OutputStreamResource.class);
90
91 OutputStream os = osResource == null ? null : osResource.getOutputStream();
92 if (os != null)
93 {
94 try
95 {
96 JRSaver.saveObject(objectResource.getValue(), os);
97 }
98 catch (JRException e)
99 {
100 throw new JRRuntimeException(e);
101 }
102 finally
103 {
104 try
105 {
106 os.close();
107 }
108 catch (IOException e)
109 {
110 }
111 }
112 }
113
114 }
115
116 }
117