1 package fr.in2p3.jsaga.impl.file.stream;
2
3 import fr.in2p3.jsaga.impl.task.AbstractThreadedTask;
4 import org.ogf.saga.SagaObject;
5 import org.ogf.saga.error.*;
6 import org.ogf.saga.file.FileInputStream;
7 import org.ogf.saga.session.Session;
8 import org.ogf.saga.task.Task;
9 import org.ogf.saga.task.TaskMode;
10
11 import java.io.IOException;
12 import java.util.UUID;
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public abstract class AbstractAsyncFileInputStreamImpl extends FileInputStream {
27 private Session m_session;
28 private UUID m_uuid;
29
30
31 public AbstractAsyncFileInputStreamImpl(Session session) {
32 m_session = session;
33 m_uuid = UUID.randomUUID();
34 }
35
36
37 public SagaObject clone() throws CloneNotSupportedException {
38 AbstractAsyncFileInputStreamImpl clone = (AbstractAsyncFileInputStreamImpl) super.clone();
39 clone.m_session = m_session;
40 clone.m_uuid = UUID.randomUUID();
41 return clone;
42 }
43
44
45
46 public Session getSession() throws DoesNotExistException {
47 if (m_session != null) {
48 return m_session;
49 } else {
50 throw new DoesNotExistException("This object does not have a session attached", this);
51 }
52 }
53
54 public String getId() {
55 return m_uuid.toString();
56 }
57
58
59
60 public Task<FileInputStream, Integer> read(TaskMode mode) throws NotImplementedException {
61 return new AbstractThreadedTask<FileInputStream,Integer>(mode) {
62 public Integer invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
63 try {
64 return AbstractAsyncFileInputStreamImpl.this.read();
65 } catch (IOException e) {
66 throw new NoSuccessException(e);
67 }
68 }
69 };
70 }
71
72 public Task<FileInputStream, Integer> read(TaskMode mode, final byte[] buf, final int off, final int len) throws NotImplementedException {
73 return new AbstractThreadedTask<FileInputStream,Integer>(mode) {
74 public Integer invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
75 try {
76 return AbstractAsyncFileInputStreamImpl.this.read(buf, off, len);
77 } catch (IOException e) {
78 throw new NoSuccessException(e);
79 }
80 }
81 };
82 }
83
84 public Task<FileInputStream, Long> skip(TaskMode mode, final long n) throws NotImplementedException {
85 return new AbstractThreadedTask<FileInputStream,Long>(mode) {
86 public Long invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
87 try {
88 return AbstractAsyncFileInputStreamImpl.this.skip(n);
89 } catch (IOException e) {
90 throw new NoSuccessException(e);
91 }
92 }
93 };
94 }
95
96 public Task<FileInputStream, Integer> available(TaskMode mode) throws NotImplementedException {
97 return new AbstractThreadedTask<FileInputStream,Integer>(mode) {
98 public Integer invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
99 try {
100 return AbstractAsyncFileInputStreamImpl.this.available();
101 } catch (IOException e) {
102 throw new NoSuccessException(e);
103 }
104 }
105 };
106 }
107
108 public Task<FileInputStream, Void> close(TaskMode mode) throws NotImplementedException {
109 return new AbstractThreadedTask<FileInputStream,Void>(mode) {
110 public Void invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
111 try {
112 AbstractAsyncFileInputStreamImpl.this.close();
113 return null;
114 } catch (IOException e) {
115 throw new NoSuccessException(e);
116 }
117 }
118 };
119 }
120
121 public Task<FileInputStream, Void> mark(TaskMode mode, final int readlimit) throws NotImplementedException {
122 return new AbstractThreadedTask<FileInputStream,Void>(mode) {
123 public Void invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
124 AbstractAsyncFileInputStreamImpl.this.mark(readlimit);
125 return null;
126 }
127 };
128 }
129
130 public Task<FileInputStream, Void> reset(TaskMode mode) throws NotImplementedException {
131 return new AbstractThreadedTask<FileInputStream,Void>(mode) {
132 public Void invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
133 try {
134 AbstractAsyncFileInputStreamImpl.this.reset();
135 return null;
136 } catch (IOException e) {
137 throw new NoSuccessException(e);
138 }
139 }
140 };
141 }
142
143 public Task<FileInputStream, Boolean> markSupported(TaskMode mode) throws NotImplementedException {
144 return new AbstractThreadedTask<FileInputStream,Boolean>(mode) {
145 public Boolean invoke() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, IncorrectStateException, AlreadyExistsException, DoesNotExistException, TimeoutException, NoSuccessException {
146 return AbstractAsyncFileInputStreamImpl.this.markSupported();
147 }
148 };
149 }
150 }