Skip to content

Commit 79860e6

Browse files
committed
Fixed problem with jackrabbit 2.22.0
1 parent f774e3a commit 79860e6

File tree

4 files changed

+87
-19
lines changed

4 files changed

+87
-19
lines changed

logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,6 @@ private void writeFile(boolean hasContentLength) {
144144
if (outputCtx.hasStream() && outFile != null) {
145145
OutputStream out = outputCtx.getOutputStream();
146146
try {
147-
// make sure the content-length is set
148-
// if (!hasContentLength) {
149-
// outputCtx.setContentLength(outFile.length());
150-
// }
151147
FileInputStream in = new FileInputStream(outFile);
152148
IOUtil.spool(in, out);
153149
} catch (IOException e) {

logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/resource/VersionControlledResourceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,11 @@ public String checkin() throws DavException {
143143
public void checkout() throws DavException {
144144
resourceService.checkout(getResource(), getResource().getSession());
145145
}
146+
147+
@Override
148+
public org.apache.jackrabbit.webdav.DavSession getSession() {
149+
return this.getSession();
150+
}
146151

147152
/**
148153
* @throws org.apache.jackrabbit.webdav.DavException error in the DAV

logicaldoc-webdav/src/test/java/com/logicaldoc/webdav/resource/service/ResourceServiceImplTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.util.List;
1515

1616
import org.apache.jackrabbit.webdav.DavException;
17+
import org.junit.Assert;
1718
import org.junit.Test;
1819

1920
import com.logicaldoc.core.PersistenceException;
@@ -217,10 +218,31 @@ public void testMoveFolder() throws DavException {
217218

218219
source = testSubject.getResource("/Default/folder6", davSession);
219220
assertNull(source);
221+
222+
// rename a folder
223+
Resource source02 = testSubject.getResource("/Default/folder7", davSession);
224+
Resource destination02 = testSubject.getResource("/Default", davSession);
225+
226+
// Bad example, the rename must be done in a different way
227+
Resource badBlood = testSubject.move(source02, destination02, "reputation", davSession);
228+
assertNotNull(badBlood);
229+
assertFalse("reputation".equals(badBlood.getName()));
230+
assertEquals("folder7", badBlood.getName());
231+
assertTrue(badBlood.isFolder());
232+
233+
// good example (folder rename)
234+
source02.setName("delicate");
235+
Resource delicate = testSubject.move(source02, destination02, null, davSession);
236+
assertNotNull(delicate);
237+
assertEquals("delicate", delicate.getName());
238+
assertTrue(delicate.isFolder());
239+
220240
}
221241

222242
@Test
223243
public void testDeleteResource() throws DavException {
244+
245+
// delete document
224246
Resource resource = testSubject.getResource("/Default/one.pdf", davSession);
225247
assertNotNull(resource);
226248
assertEquals("one.pdf", resource.getName());
@@ -229,6 +251,7 @@ public void testDeleteResource() throws DavException {
229251
testSubject.deleteResource(resource, davSession);
230252
assertNull(testSubject.getResource("/Default/one.pdf", davSession));
231253

254+
// delete folder
232255
resource = testSubject.getResource("/Default/folder6", davSession);
233256
assertNotNull(resource);
234257
assertEquals("folder6", resource.getName());
@@ -257,6 +280,14 @@ public void testCopy() throws DavException {
257280

258281
source = testSubject.getResource("/Default/one.pdf", davSession);
259282
assertNotNull(source);
283+
284+
// Test copy Folder (it should produce an exception, as right now copy of folder is not supported)
285+
Resource dest02 = testSubject.getResource("/Default/folder7", davSession);
286+
try {
287+
testSubject.copy(destinationFolder, dest02, null, davSession);
288+
Assert.fail();
289+
} catch (DavException e) {
290+
}
260291
}
261292

262293
@Test
@@ -290,6 +321,7 @@ public void testCheckout() throws DavException, PersistenceException {
290321
doc = docDao.findById(1L);
291322
assertEquals(AbstractDocument.DOC_CHECKED_OUT, doc.getStatus());
292323

324+
// Test uncheckout
293325
resource = testSubject.getResource("/Default/one.pdf", davSession);
294326
testSubject.uncheckout(resource, davSession);
295327

logicaldoc-webdav/src/test/java/com/logicaldoc/webdav/web/WebdavServletTest.java

Lines changed: 50 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
import java.io.IOException;
99
import java.sql.SQLException;
1010

11+
import javax.servlet.http.HttpServletResponse;
12+
1113
import org.apache.jackrabbit.webdav.DavConstants;
14+
import org.apache.jackrabbit.webdav.DavMethods;
1215
import org.eclipse.jetty.util.StringUtil;
1316
import org.junit.Test;
1417

@@ -91,13 +94,15 @@ public void testService() throws IOException, PersistenceException {
9194
testVERSIONCONTROL();
9295

9396
testDELETE();
97+
98+
testUNCHECKOUT();
9499
}
95100

96101
public void testVERSIONCONTROL() throws IOException {
97102
File tempFile = FileUtil.createTempFile("webdav", ".xml");
98103
try {
99104
MockServletResponse response = new MockServletResponse(tempFile);
100-
MockServletRequest request = prepareRequest("VERSION-CONTROL", "/five.pdf");
105+
MockServletRequest request = prepareRequest(DavMethods.METHOD_VERSION_CONTROL, "/five.pdf");
101106
testSubject.service(request, response);
102107

103108
} finally {
@@ -110,7 +115,7 @@ public void testREPORT() throws IOException {
110115
File tempFile = FileUtil.createTempFile("webdav", ".xml");
111116
try {
112117
MockServletResponse response = new MockServletResponse(tempFile);
113-
MockServletRequest request = prepareRequest("REPORT", "/five.pdf");
118+
MockServletRequest request = prepareRequest(DavMethods.METHOD_REPORT, "/five.pdf");
114119
request.setBody("""
115120
<?xml version="1.0" encoding="utf-8" ?>
116121
<ld:filter-files xmlns:a="DAV:" xmlns:ld="http://logicaldoc.com/ns" >
@@ -135,7 +140,7 @@ public void testCHECKIN() throws IOException, PersistenceException {
135140
assertEquals(AbstractDocument.DOC_UNLOCKED, doc.getStatus());
136141

137142
MockServletResponse response = new MockServletResponse(tempFile);
138-
MockServletRequest request = prepareRequest("CHECKOUT", "/five.pdf");
143+
MockServletRequest request = prepareRequest(DavMethods.METHOD_CHECKOUT, "/five.pdf");
139144
testSubject.service(request, response);
140145

141146
doc = docDao.findById(5L);
@@ -160,7 +165,7 @@ public void testLOCK() throws IOException, PersistenceException {
160165
assertEquals(AbstractDocument.DOC_UNLOCKED, doc.getStatus());
161166

162167
MockServletResponse response = new MockServletResponse(tempFile);
163-
MockServletRequest request = prepareRequest("LOCK", "/five.pdf");
168+
MockServletRequest request = prepareRequest(DavMethods.METHOD_LOCK, "/five.pdf");
164169
testSubject.service(request, response);
165170

166171
doc = docDao.findById(5L);
@@ -180,7 +185,7 @@ public void testOPTIONS() throws IOException {
180185
File tempFile = FileUtil.createTempFile("webdav", ".xml");
181186
try {
182187
MockServletResponse response = new MockServletResponse(tempFile);
183-
MockServletRequest request = prepareRequest("OPTIONS", "/five.pdf");
188+
MockServletRequest request = prepareRequest(DavMethods.METHOD_OPTIONS, "/five.pdf");
184189
testSubject.service(request, response);
185190

186191
assertTrue(response.getHeader("Allow").contains("POST"));
@@ -196,7 +201,7 @@ public void testMKCOL() throws IOException {
196201
assertFalse(callPROPFIND().contains(PREFIX + "/folder6/newfolder"));
197202

198203
MockServletResponse response = new MockServletResponse(tempFile);
199-
MockServletRequest request = prepareRequest("MKCOL", "/folder6/newfolder");
204+
MockServletRequest request = prepareRequest(DavMethods.METHOD_MKCOL, "/folder6/newfolder");
200205
testSubject.service(request, response);
201206

202207
assertTrue(callPROPFIND().contains(PREFIX + "/folder6/newfolder"));
@@ -212,7 +217,7 @@ public void testMOVE() throws IOException {
212217
assertFalse(callPROPFIND().contains(PREFIX + "/folder6/moved.pdf"));
213218

214219
MockServletResponse response = new MockServletResponse(tempFile);
215-
MockServletRequest request = prepareRequest("MOVE", "/five.pdf");
220+
MockServletRequest request = prepareRequest(DavMethods.METHOD_MOVE, "/five.pdf");
216221
request.setHeader(DavConstants.HEADER_DESTINATION, PREFIX + "/folder6/moved.pdf");
217222
testSubject.service(request, response);
218223

@@ -230,7 +235,7 @@ public void testCOPY() throws IOException {
230235
assertFalse(callPROPFIND().contains(PREFIX + "/folder6/copied.pdf"));
231236

232237
MockServletResponse response = new MockServletResponse(tempFile);
233-
MockServletRequest request = prepareRequest("COPY", "/one.pdf");
238+
MockServletRequest request = prepareRequest(DavMethods.METHOD_COPY, "/one.pdf");
234239
request.setHeader(DavConstants.HEADER_DESTINATION, PREFIX + "/folder6/copied.pdf");
235240
testSubject.service(request, response);
236241

@@ -239,7 +244,7 @@ public void testCOPY() throws IOException {
239244

240245
// Copy over existing file
241246
response = new MockServletResponse(tempFile);
242-
request = prepareRequest("COPY", "/one.pdf");
247+
request = prepareRequest(DavMethods.METHOD_COPY, "/one.pdf");
243248
request.setHeader(DavConstants.HEADER_DESTINATION, PREFIX + "/folder6/copied.pdf");
244249
testSubject.service(request, response);
245250

@@ -256,7 +261,7 @@ public void testDELETE() throws IOException {
256261
assertTrue(callPROPFIND().contains(PREFIX + "/one.pdf"));
257262

258263
MockServletResponse response = new MockServletResponse(tempFile);
259-
MockServletRequest request = prepareRequest("DELETE", "/one.pdf");
264+
MockServletRequest request = prepareRequest(DavMethods.METHOD_DELETE, "/one.pdf");
260265
testSubject.service(request, response);
261266

262267
assertFalse(callPROPFIND().contains(PREFIX + "/one.pdf"));
@@ -270,7 +275,7 @@ private String callPROPFIND() throws IOException {
270275
try {
271276
MockServletResponse response = new MockServletResponse(tempFile);
272277

273-
MockServletRequest request = prepareRequest("PROPFIND", "");
278+
MockServletRequest request = prepareRequest(DavMethods.METHOD_PROPFIND, "");
274279
//request.setHeader("Depth", "1");
275280
request.setHeader("Accept-Encoding", "identity");
276281
request.setHeader("Content-Type", "application/xml; charset=utf-8");
@@ -290,7 +295,7 @@ public void testPUT() throws IOException {
290295
assertFalse(callPROPFIND().contains(PREFIX + "/folder6/newfile.pdf"));
291296

292297
MockServletResponse response = new MockServletResponse(tempFile);
293-
MockServletRequest request = prepareRequest("PUT", "/folder6/newfile1.pdf");
298+
MockServletRequest request = prepareRequest(DavMethods.METHOD_PUT, "/folder6/newfile1.pdf");
294299
request.setPayload(this.getClass().getResourceAsStream("/pdf1.pdf"));
295300
testSubject.service(request, response);
296301

@@ -324,7 +329,7 @@ public void testGET() throws IOException {
324329
File tempFile = FileUtil.createTempFile("webdav", ".pdf");
325330
try {
326331
MockServletResponse response = new MockServletResponse(tempFile);
327-
MockServletRequest request = prepareRequest("GET", "/one.pdf");
332+
MockServletRequest request = prepareRequest(DavMethods.METHOD_GET, "/one.pdf");
328333
testSubject.service(request, response);
329334

330335
assertEquals(127810L, tempFile.length());
@@ -337,7 +342,7 @@ public void testHEAD() throws IOException {
337342
File tempFile = FileUtil.createTempFile("webdav", ".xml");
338343
try {
339344
MockServletResponse response = new MockServletResponse(tempFile);
340-
MockServletRequest request = prepareRequest("HEAD", "/one.pdf");
345+
MockServletRequest request = prepareRequest(DavMethods.METHOD_HEAD, "/one.pdf");
341346
testSubject.service(request, response);
342347

343348
assertEquals("d-1_1.0", response.getHeaders().get("ETag"));
@@ -350,12 +355,42 @@ public void testPROPPATCH() throws IOException {
350355
File tempFile = FileUtil.createTempFile("webdav", ".xml");
351356
try {
352357
MockServletResponse response = new MockServletResponse(tempFile);
353-
MockServletRequest request = prepareRequest("PROPPATCH", "/one.pdf");
358+
MockServletRequest request = prepareRequest(DavMethods.METHOD_PROPPATCH, "/one.pdf");
354359
testSubject.service(request, response);
355360
} finally {
356361
FileUtil.delete(tempFile);
357362
}
358363
}
364+
365+
public void testUNCHECKOUT() throws IOException, PersistenceException {
366+
File tempFile = FileUtil.createTempFile("webdav", ".xml");
367+
try {
368+
Document doc = docDao.findById(7L);
369+
assertEquals(AbstractDocument.DOC_UNLOCKED, doc.getStatus());
370+
371+
// SET THE STATUS TO CHECKOUT
372+
MockServletResponse response = new MockServletResponse(tempFile);
373+
MockServletRequest request = prepareRequest(DavMethods.METHOD_CHECKOUT, "/New error indexing documents.eml");
374+
testSubject.service(request, response);
375+
376+
doc = docDao.findById(7L);
377+
assertEquals(AbstractDocument.DOC_CHECKED_OUT, doc.getStatus());
378+
379+
// Perform the uncheckout
380+
response = new MockServletResponse(tempFile);
381+
request = prepareRequest(DavMethods.METHOD_UNCHECKOUT, "/New error indexing documents.eml");
382+
testSubject.service(request, response);
383+
384+
// Check the response
385+
assertEquals(HttpServletResponse.SC_OK, response.getStatus());
386+
387+
// Check the value
388+
doc = docDao.findById(7L);
389+
assertEquals(AbstractDocument.DOC_UNLOCKED, doc.getStatus());
390+
} finally {
391+
FileUtil.delete(tempFile);
392+
}
393+
}
359394

360395
protected MockServletRequest prepareRequest(String method, String path) {
361396
MockServletRequest request = new MockServletRequest(servletSession);

0 commit comments

Comments
 (0)