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>