Skip to content

Commit 3a103cd

Browse files
committed
Merge branch 'schemares1'
2 parents 1acb8d3 + 9094fbf commit 3a103cd

6 files changed

Lines changed: 119 additions & 19 deletions

File tree

src/main/java/org/cip4/jdfutility/CheckJDFServlet.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* The CIP4 Software License, Version 1.0
44
*
55
*
6-
* Copyright (c) 2001-2024 The International Cooperation for the Integration of Processes in Prepress, Press and Postpress (CIP4). All rights reserved.
6+
* Copyright (c) 2001-2025 The International Cooperation for the Integration of Processes in Prepress, Press and Postpress (CIP4). All rights reserved.
77
*
88
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
99
*
@@ -186,7 +186,7 @@ protected void processPost() throws ServletException, IOException
186186
*/
187187
protected void doFix(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException
188188
{
189-
final List<FileItem> fileItems = new FileItemList(request, 20l * 1024 * 1024).getFileList(true, true);
189+
final List<FileItem> fileItems = FileItemList.getMemoryFileItemList(request, 20l * 1024 * 1024).getFileList(true, true);
190190
FileItem fileItem = null;
191191
EnumVersion version = null;
192192
int nFiles = 0;
@@ -406,7 +406,7 @@ JDFDoc updateSingle(EnumVersion version, final JDFDoc d0)
406406
protected void processMultipartRequest(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException
407407
{
408408
// Parse the multipart request
409-
final List<FileItem> fileItems = new FileItemList(req, 43l * 1024l * 1024l).getFileList(true, true);
409+
final List<FileItem> fileItems = FileItemList.getMemoryFileItemList(req, 66l * 1024l * 1024l).getFileList(true, true);
410410

411411
// Get the first file item
412412
// To do: Process all file items

src/main/java/org/cip4/jdfutility/FileItemList.java

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,25 @@ public class FileItemList
102102
private final JDFAttributeMap mapCache;
103103
private final JDFAttributeMap reqParameters;
104104

105+
/**
106+
* returns a pure in memory FileItemList
107+
*
108+
* @param request
109+
* @param filesize
110+
* @return
111+
*/
112+
public static FileItemList getMemoryFileItemList(final HttpServletRequest request, final long filesize)
113+
{
114+
try
115+
{
116+
return new FileItemList(request, filesize, true);
117+
}
118+
catch (final ServletException e)
119+
{
120+
return null;
121+
}
122+
}
123+
105124
/**
106125
*
107126
* @param request
@@ -112,27 +131,32 @@ public static FileItemList getFileItemList(final HttpServletRequest request, fin
112131
{
113132
try
114133
{
115-
return new FileItemList(request, filesize);
134+
return new FileItemList(request, filesize, false);
116135
}
117136
catch (final ServletException e)
118137
{
119138
return null;
120139
}
121140
}
122141

142+
public FileItemList(final HttpServletRequest request, final long filesize) throws ServletException
143+
{
144+
this(request, filesize, false);
145+
}
146+
123147
/**
124148
*
125149
* @param request
126150
* @param filesize
127151
* @throws ServletException
128152
*/
129-
public FileItemList(final HttpServletRequest request, final long filesize) throws ServletException
153+
FileItemList(final HttpServletRequest request, final long filesize, final boolean inMemory) throws ServletException
130154
{
131155
mapCache = new JDFAttributeMap();
132156
reqParameters = new JDFAttributeMap();
133157
fileItems = new ArrayList<FileItem>();
134158
// Create a factory for disk-based file items
135-
final FileItemFactory factory = new DiskFileItemFactory();
159+
final FileItemFactory factory = getFactory(inMemory, filesize);
136160

137161
// Create a new file upload handler
138162
final ServletFileUpload upload = new ServletFileUpload(factory);
@@ -167,6 +191,20 @@ public FileItemList(final HttpServletRequest request, final long filesize) throw
167191
}
168192
}
169193

194+
FileItemFactory getFactory(final boolean inMemory, final long filesize)
195+
{
196+
if (inMemory && filesize <= 1)
197+
{
198+
throw new IllegalArgumentException("cannot create in memory factory with low size " + filesize);
199+
}
200+
final DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
201+
if (inMemory)
202+
{
203+
diskFileItemFactory.setSizeThreshold((int) filesize);
204+
}
205+
return diskFileItemFactory;
206+
}
207+
170208
/**
171209
*
172210
*

src/main/resources/index.html

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,16 +246,26 @@ <h1>FixJDF</h1>
246246
value="1.7" checked="checked" />
247247
<label class="form-check-label">JDF 1.7</label>
248248
</div>
249+
<div class="form-check">
250+
<input type="radio" class="form-check-input" name="Version"
251+
value="1.8" checked="checked" />
252+
<label class="form-check-label">JDF 1.8</label>
253+
</div>
249254
<div class="form-check">
250255
<input type="radio" class="form-check-input" name="Version"
251256
value="2.0" />
252257
<label class="form-check-label">XJDF 2.0</label>
253258
</div>
254259
<div class="form-check">
255260
<input type="radio" class="form-check-input" name="Version"
256-
value="2.1" />
261+
value="2.1" />
257262
<label class="form-check-label">XJDF 2.1</label>
258263
</div>
264+
<div class="form-check">
265+
<input type="radio" class="form-check-input" name="Version"
266+
value="2.2" />
267+
<label class="form-check-label">XJDF 2.2</label>
268+
</div>
259269
</form>
260270
</div>
261271

src/test/java/org/cip4/jdfutility/CheckJDFServletTest.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* The CIP4 Software License, Version 1.0
33
*
44
*
5-
* Copyright (c) 2001-2021 The International Cooperation for the Integration of Processes in Prepress, Press and Postpress (CIP4). All rights reserved.
5+
* Copyright (c) 2001-2025 The International Cooperation for the Integration of Processes in Prepress, Press and Postpress (CIP4). All rights reserved.
66
*
77
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
88
*
@@ -36,9 +36,18 @@
3636
*/
3737
package org.cip4.jdfutility;
3838

39-
import org.junit.jupiter.api.Test;
40-
4139
import static org.junit.jupiter.api.Assertions.assertNotNull;
40+
import static org.mockito.Mockito.mock;
41+
import static org.mockito.Mockito.when;
42+
43+
import java.io.ByteArrayOutputStream;
44+
import java.io.PrintWriter;
45+
46+
import javax.servlet.http.HttpServletRequest;
47+
import javax.servlet.http.HttpServletResponse;
48+
49+
import org.cip4.jdfutility.CheckJDFServlet.FixCall;
50+
import org.junit.jupiter.api.Test;
4251

4352
public class CheckJDFServletTest extends JDFUtilityTestBase
4453
{
@@ -53,6 +62,22 @@ public void testCreate() throws Exception
5362
assertNotNull(s);
5463
}
5564

65+
/**
66+
* @throws Exception
67+
*
68+
*/
69+
@Test
70+
public void testDoFix() throws Exception
71+
{
72+
final CheckJDFServlet s = new CheckJDFServlet();
73+
final HttpServletResponse mockResp = mock(HttpServletResponse.class);
74+
75+
when(mockResp.getWriter()).thenReturn(new PrintWriter(new ByteArrayOutputStream()));
76+
final FixCall fc = s.new FixCall(s, mock(HttpServletRequest.class), mockResp);
77+
fc.doFix(mock(HttpServletRequest.class), mockResp);
78+
assertNotNull(fc);
79+
}
80+
5681
/**
5782
* @throws Exception
5883
*

src/test/java/org/cip4/jdfutility/FileItemListTest.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,74 +74,101 @@
7474
import static org.junit.jupiter.api.Assertions.assertFalse;
7575
import static org.junit.jupiter.api.Assertions.assertNotNull;
7676
import static org.junit.jupiter.api.Assertions.assertNull;
77+
import static org.junit.jupiter.api.Assertions.assertThrows;
7778
import static org.junit.jupiter.api.Assertions.assertTrue;
79+
import static org.mockito.ArgumentMatchers.any;
7880
import static org.mockito.Mockito.mock;
7981
import static org.mockito.Mockito.when;
8082

83+
import java.io.IOException;
84+
import java.util.ArrayList;
8185
import java.util.HashMap;
8286
import java.util.Map;
8387

8488
import javax.servlet.ServletException;
8589
import javax.servlet.http.HttpServletRequest;
90+
import javax.servlet.http.Part;
8691

92+
import org.cip4.jdflib.util.ContainerUtil;
8793
import org.junit.jupiter.api.Test;
8894

8995
class FileItemListTest extends JDFUtilityTestBase
9096
{
9197

9298
@Test
93-
void testString() throws ServletException
99+
void testString() throws Exception
94100
{
95101
assertNotNull(new FileItemList(getRequestMock(), 42).toString());
96102
}
97103

98104
@Test
99-
void testGetBool() throws ServletException
105+
void testGetBool() throws Exception
100106
{
101107
assertFalse(new FileItemList(getRequestMock(), 42).getBoolField("a", false));
102108
assertTrue(new FileItemList(getRequestMock(), 42).getBoolField("a1", false));
103109
assertTrue(new FileItemList(getRequestMock(), 42).getBoolField("A1", false));
104110
}
105111

106112
@Test
107-
void testGetInt() throws ServletException
113+
void testGetInt() throws Exception
108114
{
109115
assertEquals(0, new FileItemList(getRequestMock(), 42).getIntField("a", 0));
110116
assertEquals(1, new FileItemList(getRequestMock(), 42).getIntField("a2", 0));
111117
assertEquals(1, new FileItemList(getRequestMock(), 42).getIntField("A2", 0));
112118
}
113119

114120
@Test
115-
void testGetField() throws ServletException
121+
void testGetField() throws Exception
116122
{
117123
assertEquals(null, new FileItemList(getRequestMock(), 42).getField("a"));
118124
assertEquals("abc", new FileItemList(getRequestMock(), 42).getField("a3"));
119125
assertEquals("abc", new FileItemList(getRequestMock(), 42).getField("A3"));
120126
}
121127

122128
@Test
123-
void testGetFile() throws ServletException
129+
void testGetFile() throws Exception
124130
{
125131
assertNull(new FileItemList(getRequestMock(), 42).getFile(0));
126132
assertNull(new FileItemList(getRequestMock(), 42).getFile("foo"));
127133
}
128134

129135
@Test
130-
void testGetFileStream() throws ServletException
136+
void testGetFileStream() throws Exception
131137
{
132138
assertNull(new FileItemList(getRequestMock(), 42).getFileInputStream(0));
133139
assertNull(new FileItemList(getRequestMock(), 42).getFileInputStream("foo"));
134140
}
135141

136-
HttpServletRequest getRequestMock()
142+
@Test
143+
void testGetMem() throws Exception
144+
{
145+
assertNull(FileItemList.getMemoryFileItemList(getRequestMock(), 999).getFileInputStream(0));
146+
assertNull(FileItemList.getFileItemList(getRequestMock(), 999).getFileInputStream(0));
147+
}
148+
149+
HttpServletRequest getRequestMock() throws IOException, ServletException
137150
{
138151
final HttpServletRequest mock = mock(HttpServletRequest.class);
139152
final Map<String, String[]> pm = new HashMap<String, String[]>();
140153
pm.put("A1", new String[] { "true" });
141154
pm.put("A2", new String[] { "1" });
142155
pm.put("A3", new String[] { "abc" });
143156
when(mock.getParameterMap()).thenReturn(pm);
157+
158+
final Part part1 = mock(Part.class);
159+
when(mock.getPart(any())).thenReturn(part1);
160+
when(mock.getParts()).thenReturn(ContainerUtil.add(new ArrayList<Part>(), part1));
144161
return mock;
145162
}
146163

164+
@Test
165+
void testGetFactory() throws Exception
166+
{
167+
final FileItemList l = new FileItemList(getRequestMock(), 42);
168+
assertThrows(IllegalArgumentException.class, () -> l.getFactory(true, 0));
169+
l.getFactory(false, 0);
170+
l.getFactory(false, 99999);
171+
l.getFactory(true, 99999);
172+
}
173+
147174
}

src/test/java/org/cip4/jdfutility/schema/JDFSchemaUtilTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class JDFSchemaUtilTest extends JDFUtilityTestBase
8383
{
8484

8585
@Test
86-
public void testschema()
86+
void testschema()
8787
{
8888
FileUtil.deleteAll(new File(sm_dirTestDataTemp + "tmp/schema"));
8989
if (new UrlCheck("https://schema.cip4.org").pingRC(123) == 200)
@@ -123,7 +123,7 @@ public void testschema()
123123
}
124124

125125
@Test
126-
public void testresSchema()
126+
void testresSchema()
127127
{
128128
assertNotNull(JDFSchemaUtil.getLocalXJDFSchemaDoc());
129129
}

0 commit comments

Comments
 (0)