Mercurial > hg > digilibservice
changeset 5:f723439bd23e
added query parameter to wsdl. uses parameters now. writing result doesn't work.
author | casties |
---|---|
date | Fri, 06 May 2011 18:22:28 +0200 |
parents | 2a34f8fa0f32 |
children | 913bc132ed96 |
files | src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java src/main/java/info/textgrid/rest.java src/main/webapp/WEB-INF/DigilibService.wsdl |
diffstat | 3 files changed, 35 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java Fri May 06 17:34:50 2011 +0200 +++ b/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java Fri May 06 18:22:28 2011 +0200 @@ -1,5 +1,6 @@ package info.textgrid.middleware.digilib.services.scaler; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -20,6 +21,7 @@ import digilib.image.ImageWorker; import digilib.io.ImageCacheStream; import digilib.servlet.DigilibConfiguration; +import digilib.servlet.DigilibRequest; import info.textgrid.namespaces.metadata.core._2010.MetadataContainerType; import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService; @@ -37,10 +39,11 @@ public class Scaler implements DigilibService { @Override - public void getScaledImage(String sessionId, String uri, + public void getScaledImage(String sessionId, String uri, String query, String logParameter, Holder<String> mimeType, - Holder<byte[]> imageData) { - + Holder<byte[]> imageData, Holder<Integer> width, + Holder<Integer> height) { + System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter); // Get TG-crud service. @@ -67,15 +70,6 @@ SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding(); binding.setMTOMEnabled(true); - // Use non MTOM stub. - /* - * TGCrudService tgcrud_nonMtom = service.getTGCrudPort(); - * //BindingProvider bindingProvider_nonMtom = (BindingProvider) - * tgcrud_nonMtom; //SOAPBinding binding_nonMtom = (SOAPBinding) - * bindingProvider_nonMtom .getBinding(); - * binding_nonMtom.setMTOMEnabled(false); - */ - // Create holders. Holder<MetadataContainerType> metadataHolder = new Holder<MetadataContainerType>(); Holder<DataHandler> dataHolder = new Holder<DataHandler>(); @@ -101,18 +95,19 @@ if (mode.equalsIgnoreCase("digilib")) { // try scaling DigilibConfiguration dlConfig = new DigilibConfiguration(); - ImageJobDescription job = new ImageJobDescription(dlConfig); + DigilibRequest dlReq = new DigilibRequest(); + dlReq.setWithParamString(query, "&"); + ImageJobDescription job = ImageJobDescription.getInstance(dlReq, dlConfig); ImageCacheStream imgStream = new ImageCacheStream(istream, mt); System.out.println("iis="+imgStream.getImageInputStream()); ImageLoaderDocuImage img = new ImageLoaderDocuImage(); // reuse reader for stream input img.reuseReader = true; + // identify image size System.out.println("Identifying..."); img.identify(imgStream); job.setDocuImage(img); job.setInput(imgStream); - job.setValue("dw", 500); - job.setValue("dh", 500); // use image worker ImageWorker digilib = new ImageWorker(dlConfig, job); System.out.println("Scaling with "+digilib); @@ -120,12 +115,23 @@ System.out.println(Long.toString(System.currentTimeMillis() - startTime) + " ms"); + // save image to buffer + ByteArrayOutputStream ostream = new ByteArrayOutputStream(); + img.writeImage("image/jpeg", ostream); + System.out.println("written in "+(System.currentTimeMillis()-startTime)+" ms"); + // set buffer in Holder + imageData.value = ostream.toByteArray(); + mimeType.value = "image/jpeg"; + System.out.println("output set."); + + /* save to file File f = new File("/tmp/tgimg.jpg"); OutputStream ostream = new FileOutputStream(f); img.writeImage("image/jpeg", ostream); System.out.println(Long.toString(System.currentTimeMillis() - startTime) + " ms"); + */ } else { // try to copy to file File f = new File("/tmp/tgimg.img");
--- a/src/main/java/info/textgrid/rest.java Fri May 06 17:34:50 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -package info.textgrid; - -import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService; - -import javax.jws.WebService; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.xml.ws.Holder; - -@WebService(targetNamespace = "http://textgrid.info/namespaces/middleware/digilib/services/DigilibService", - serviceName="DigilibService", portName="DigilibServiceSOAP", - endpointInterface="info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService") -public class rest implements DigilibService { - - - - @GET - @Path("/hello") - @Produces("text/plain") - public String getVersion() { - return "hello"; - } - - @Override - public void getScaledImage(String sessionId, String uri, - String logParameter, Holder<String> mimeType, - Holder<byte[]> imageData) { - System.out.println("getscaledimage! sid="+sessionId+" uri="+uri+" log="+logParameter); - } - -} \ No newline at end of file
--- a/src/main/webapp/WEB-INF/DigilibService.wsdl Fri May 06 17:34:50 2011 +0200 +++ b/src/main/webapp/WEB-INF/DigilibService.wsdl Fri May 06 18:22:28 2011 +0200 @@ -5,17 +5,26 @@ <xsd:element name="getScaledImage"> <xsd:complexType> <xsd:sequence> - <xsd:element name="sessionId" type="xsd:string" /> - <xsd:element name="uri" type="xsd:anyURI"></xsd:element> - <xsd:element name="logParameter" type="xsd:string"></xsd:element> + <xsd:element name="sessionId" type="xsd:string" + minOccurs="1" maxOccurs="1" /> + <xsd:element name="uri" type="xsd:anyURI" minOccurs="1" + maxOccurs="1"> + </xsd:element> + <xsd:element name="query" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element> + <xsd:element name="logParameter" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getScaledImageResponse"> <xsd:complexType> <xsd:sequence> - <xsd:element name="mimeType" type="xsd:string" /> - <xsd:element name="imageData" type="xsd:base64Binary"></xsd:element> + <xsd:element name="mimeType" type="xsd:string" minOccurs="1" + maxOccurs="1" /> + <xsd:element name="imageData" type="xsd:base64Binary" + minOccurs="1" maxOccurs="1"> + </xsd:element> + <xsd:element name="width" type="xsd:int"></xsd:element> + <xsd:element name="height" type="xsd:int"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element>