changeset 7:39c4892724ae

new version with maven modules for service and client.
author casties
date Thu, 16 Jun 2011 17:33:06 +0200
parents 913bc132ed96
children 99bd25677ba8
files .hgignore client/pom.xml client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java pom.xml service/pom.xml service/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java service/src/main/webapp/WEB-INF/DigilibService.wsdl service/src/main/webapp/WEB-INF/beans.xml service/src/main/webapp/WEB-INF/web.xml service/src/main/webapp/index.jsp src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java src/main/webapp/WEB-INF/DigilibService.wsdl src/main/webapp/WEB-INF/beans.xml src/main/webapp/WEB-INF/web.xml src/main/webapp/index.jsp
diffstat 15 files changed, 550 insertions(+), 353 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Wed Jun 08 17:06:03 2011 +0200
+++ b/.hgignore	Thu Jun 16 17:33:06 2011 +0200
@@ -6,4 +6,18 @@
 syntax: regexp
 ^\.project$
 syntax: regexp
-^\.settings$
\ No newline at end of file
+^\.settings$
+syntax: regexp
+^client/target$
+syntax: regexp
+^service/target$
+syntax: regexp
+^client/test\.bin$
+syntax: regexp
+^client/\.settings$
+syntax: regexp
+^service/\.settings$
+syntax: regexp
+\.classpath$
+syntax: regexp
+\.project$
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/pom.xml	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,46 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>digilibservice</artifactId>
+    <groupId>info.textgrid</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <groupId>info.textgrid</groupId>
+  <artifactId>digilibservice-client</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf</artifactId>
+      <version>${cxf.version}</version>
+      <type>pom</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <!-- <finalName>digilibservice</finalName> -->
+    <plugins>
+      <plugin>
+        <groupId>org.apache.cxf</groupId>
+        <artifactId>cxf-codegen-plugin</artifactId>
+        <version>${cxf.version}</version>
+        <executions>
+          <execution>
+            <id>generate-digilibservice-client</id>
+            <phase>generate-sources</phase>
+            <configuration>
+              <wsdlOptions>
+                <wsdlOption>
+                  <wsdl>../service/src/main/webapp/WEB-INF/DigilibService.wsdl</wsdl>
+                </wsdlOption>
+              </wsdlOptions>
+            </configuration>
+            <goals>
+              <goal>wsdl2java</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,68 @@
+/**
+ * 
+ */
+package info.textgrid.middleware.digilib.clients.cli;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.ws.Holder;
+
+import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService;
+import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType;
+
+/**
+ * @author casties
+ *
+ */
+public class DigilibCli {
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        if (args.length != 4) {
+            System.err.println("use: DgibilibCli SID URI QUERY FILENAME");
+            System.exit(1);
+        }
+        String sid = args[0];
+        String uri = args[1];
+        String query = args[2];
+        String filename = args[3];
+        // call service
+        byte[] imageData = getScaledImage(sid, uri, query);
+        // try to copy to file
+        System.out.println("writing " + filename);
+        File f = new File(filename);
+        try {
+            OutputStream ostream = new FileOutputStream(f);
+            ostream.write(imageData);
+            ostream.close();
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        System.out.println("Done.");
+    }
+
+    public static byte[] getScaledImage(String sid, String uri, String query) {
+        DigilibService service = new DigilibService();
+        DigilibServicePortType port = service.getDigilibServicePort();
+        String logParam = null;
+        // Holder for return data 
+        Holder<String> mimeType = new Holder<String>();
+        Holder<byte[]> imageData = new Holder<byte[]>();
+        Holder<Integer> width = new Holder<Integer>();
+        Holder<Integer> height = new Holder<Integer>();
+        // call service -- fills Holder
+        port.getScaledImage(sid, uri, query, logParam, mimeType, imageData, width, height);
+        System.out.println("mimeType="+mimeType.value);
+        System.out.println("imageData="+imageData.value);
+        System.out.println("width="+width.value);
+        System.out.println("height="+height.value);
+        return imageData.value;
+    }
+    
+}
--- a/pom.xml	Wed Jun 08 17:06:03 2011 +0200
+++ b/pom.xml	Thu Jun 16 17:33:06 2011 +0200
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>info.textgrid</groupId>
   <artifactId>digilibservice</artifactId>
-  <packaging>war</packaging>
+  <packaging>pom</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>digilibservice Maven Webapp</name>
   <url>http://maven.apache.org</url>
@@ -12,6 +12,7 @@
     <cxf.version>2.3.3</cxf.version>
     <jetty.version>6.1.15</jetty.version>
   </properties>
+  <dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>info.textgrid.middleware</groupId>
@@ -54,6 +55,7 @@
     	<scope>compile</scope>
     </dependency>
   </dependencies>
+  </dependencyManagement>
   <repositories>
         <repository>
             <id>archiva.internal.http</id>
@@ -78,30 +80,8 @@
             </snapshots>
         </repository>
   </repositories>
-  <build>
-    <finalName>digilibservice</finalName>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.cxf</groupId>
-        <artifactId>cxf-codegen-plugin</artifactId>
-        <version>${cxf.version}</version>
-        <executions>
-          <execution>
-            <id>generate-digilibservice-sources</id>
-            <phase>generate-sources</phase>
-            <configuration>
-              <wsdlOptions>
-                <wsdlOption>
-                  <wsdl>src/main/webapp/WEB-INF/DigilibService.wsdl</wsdl>
-                </wsdlOption>
-              </wsdlOptions>
-            </configuration>
-            <goals>
-              <goal>wsdl2java</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+  <modules>
+  	<module>service</module>
+  	<module>client</module>
+  </modules>
 </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/pom.xml	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,80 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>digilibservice</artifactId>
+    <groupId>info.textgrid</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <groupId>info.textgrid</groupId>
+  <artifactId>digilibservice-service</artifactId>
+  <packaging>war</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>info.textgrid.middleware</groupId>
+      <artifactId>tgcrud-client</artifactId>
+      <version>1.2-BETA-SNAPSHOT</version>
+      <!-- <version>1.2.1-SNAPSHOT</version> -->
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf</artifactId>
+      <version>${cxf.version}</version>
+      <type>pom</type>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+      <version>${cxf.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-frontend-jaxws</artifactId>
+      <version>${cxf.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-transports-http</artifactId>
+      <version>${cxf.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>digilib</groupId>
+      <artifactId>digilib-common</artifactId>
+      <version>2.0-SNAPSHOT</version>
+      <type>jar</type>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <finalName>digilibservice</finalName>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.cxf</groupId>
+        <artifactId>cxf-codegen-plugin</artifactId>
+        <version>${cxf.version}</version>
+        <executions>
+          <execution>
+            <id>generate-digilibservice-sources</id>
+            <phase>generate-sources</phase>
+            <configuration>
+              <wsdlOptions>
+                <wsdlOption>
+                  <wsdl>src/main/webapp/WEB-INF/DigilibService.wsdl</wsdl>
+                </wsdlOption>
+              </wsdlOptions>
+            </configuration>
+            <goals>
+              <goal>wsdl2java</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,187 @@
+package info.textgrid.middleware.digilib.services.scaler;
+
+import info.textgrid.namespaces.metadata.core._2010.MetadataContainerType;
+import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.AuthFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.IoFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.MetadataParseFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.ObjectNotFoundFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.ProtocolNotImplementedFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.TGCrudService;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.TGCrudService_Service;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.activation.DataHandler;
+import javax.jws.WebService;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Holder;
+import javax.xml.ws.soap.SOAPBinding;
+
+import digilib.image.ImageJobDescription;
+import digilib.image.ImageLoaderDocuImage;
+import digilib.image.ImageOpException;
+import digilib.image.ImageWorker;
+import digilib.io.ImageCacheStream;
+import digilib.servlet.DigilibConfiguration;
+import digilib.servlet.DigilibRequest;
+
+@WebService(targetNamespace = "http://textgrid.info/namespaces/middleware/digilib/services/DigilibService", 
+        serviceName="DigilibService", portName="DigilibServicePort",
+        endpointInterface="info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType")
+public class Scaler implements DigilibServicePortType {
+
+    @Override
+    public void getScaledImage(String sessionId, String uri, String query,
+            String logParameter, Holder<String> mimeType,
+            Holder<byte[]> imageData, Holder<Integer> width,
+            Holder<Integer> height) {
+
+        System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter);
+
+        // Get TG-crud service.
+        String serverUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; // p.getProperty("crud_serverUrl");
+        URL location = null;
+        try {
+            location = new URL(serverUrl);
+        } catch (MalformedURLException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+        System.out.println("TG-crud WSDL location: " + location.getProtocol()
+                + "://" + location.getHost() + ":"
+                + (location.getPort() == -1 ? "80" : location.getPort())
+                + location.getPath());
+
+        // Create TG-crud service stub.
+        if (serverUrl != null) {
+            // Use MTOM stub.
+            TGCrudService_Service service = new TGCrudService_Service(location);
+            TGCrudService tgcrud = service.getTGCrudPort();
+            BindingProvider bindingProvider = (BindingProvider) tgcrud;
+            SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding();
+            binding.setMTOMEnabled(true);
+
+            // Create holders.
+            Holder<MetadataContainerType> metadataHolder = new Holder<MetadataContainerType>();
+            Holder<DataHandler> dataHolder = new Holder<DataHandler>();
+
+            // Start #READ operation.
+            try {
+                String theSessionId = sessionId;
+                String theLogParameter = logParameter;
+                String theUri = uri;
+                String mode = "digilib";
+                long startTime = System.currentTimeMillis();
+                tgcrud.read(theSessionId, theLogParameter, theUri,
+                        metadataHolder, dataHolder);
+                System.out.println(Long.toString(System.currentTimeMillis()
+                        - startTime)
+                        + " ms");
+                System.out.println("READ: Title="
+                        + metadataHolder.value.getObject().getGeneric()
+                                .getProvided().getTitle().get(0));
+                InputStream istream = dataHolder.value.getInputStream();
+                String mt = metadataHolder.value.getObject().getGeneric().getProvided().getFormat();
+                System.out.println("Stream="+istream.toString()+" type="+mt);
+                if (mode.equalsIgnoreCase("digilib")) {
+                    // try scaling
+                    DigilibConfiguration dlConfig = new DigilibConfiguration();
+                    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);
+                    // use image worker
+                    ImageWorker digilib = new ImageWorker(dlConfig, job);
+                    System.out.println("Scaling with "+digilib);
+                    digilib.call();
+                    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";
+                    width.value = img.getWidth();
+                    height.value = img.getHeight();
+                    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");
+                    OutputStream ostream = new FileOutputStream(f);
+                    byte[] data = new byte[1024];
+                    int l = istream.read(data);
+                    while (l > -1) {
+                        ostream.write(data, 0, l);
+                        l = istream.read(data);
+                    }
+                    ostream.close();
+                    System.out.println(Long.toString(System.currentTimeMillis()
+                            - startTime)
+                            + " ms");
+                    System.out.println("Done writing " + f);
+                }
+            } catch (ObjectNotFoundFault e) {
+                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+                // e.getClass().getSimpleName()));
+                e.printStackTrace();
+            } catch (MetadataParseFault e) {
+                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+                // e.getClass().getSimpleName()));
+                e.printStackTrace();
+            } catch (IoFault e) {
+                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+                // e.getClass().getSimpleName()));
+                e.printStackTrace();
+            } catch (ProtocolNotImplementedFault e) {
+                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+                // e.getClass().getSimpleName()));
+                e.printStackTrace();
+            } catch (AuthFault e) {
+                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+                // e.getClass().getSimpleName()));
+                e.printStackTrace();
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } catch (ImageOpException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+        } else {
+            System.out.println("No TG-crud server WSDL URL given!");
+            // assertTrue(false);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/src/main/webapp/WEB-INF/DigilibService.wsdl	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+  xmlns:tns="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService"
+  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+  name="DigilibService"
+  targetNamespace="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService">
+  <wsdl:types>
+    <xsd:schema
+      targetNamespace="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService">
+      <xsd:element name="getScaledImage">
+        <xsd:complexType>
+          <xsd:sequence>
+            <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"
+              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>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="getScaledImageRequest">
+    <wsdl:part element="tns:getScaledImage" name="parameters" />
+  </wsdl:message>
+  <wsdl:message name="getScaledImageResponse">
+    <wsdl:part element="tns:getScaledImageResponse" name="parameters" />
+  </wsdl:message>
+  <wsdl:portType name="DigilibServicePortType">
+    <wsdl:operation name="getScaledImage">
+      <wsdl:input message="tns:getScaledImageRequest" />
+      <wsdl:output message="tns:getScaledImageResponse" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="DigilibServiceSoapBinding" type="tns:DigilibServicePortType">
+    <soap:binding style="document"
+      transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="getScaledImage">
+      <soap:operation
+        soapAction="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="DigilibService">
+    <wsdl:port binding="tns:DigilibServiceSoapBinding" name="DigilibServicePort">
+      <soap:address
+        location="http://localhost:8080/digilibservice-service/service" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/src/main/webapp/WEB-INF/beans.xml	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xmlns:jaxws="http://cxf.apache.org/jaxws"
+      xmlns:jaxrs="http://cxf.apache.org/jaxrs"
+      xsi:schemaLocation="
+http://www.springframework.org/schema/beans
+http://www.springframework.org/schema/beans/spring-beans.xsd
+http://cxf.apache.org/jaxws
+http://cxf.apache.org/schemas/jaxws.xsd
+http://cxf.apache.org/jaxrs
+http://cxf.apache.org/schemas/jaxrs.xsd
+">
+
+  <description>
+    Configuration digilibservice
+  </description>
+  
+  <import resource="classpath:META-INF/cxf/cxf.xml"/>
+  <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
+  <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
+  <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
+  
+  <!-- Here the REST-Service Endpoint Beans -->
+  <bean id="scaler" class="info.textgrid.middleware.digilib.services.scaler.Scaler">
+  </bean>
+
+    <jaxws:endpoint id="digilibservice" wsdlLocation="/WEB-INF/DigilibService.wsdl" 
+    implementor="#scaler" address="/service">
+    </jaxws:endpoint>
+
+  <!-- Rest-Endpoint Configuration
+  <jaxrs:server id="root" address="/rest">
+        <jaxrs:serviceBeans>
+            <ref bean="rest" />
+        </jaxrs:serviceBeans>
+  </jaxrs:server>  -->
+                  
+</beans> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/src/main/webapp/WEB-INF/web.xml	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,32 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+
+	<display-name>TGSearch Webservice - public instance</display-name>
+
+	<context-param>
+		<param-name>contextConfigLocation</param-name>
+		<param-value>WEB-INF/beans.xml</param-value>
+	</context-param>
+	<listener>
+		<listener-class>
+			org.springframework.web.context.ContextLoaderListener
+		</listener-class>
+	</listener>
+
+	<servlet>
+		<servlet-name>CXFServlet</servlet-name>
+		<display-name>CXF Servlet</display-name>
+		<servlet-class>
+			org.apache.cxf.transport.servlet.CXFServlet
+        </servlet-class>
+		<load-on-startup>1</load-on-startup>
+	</servlet>
+
+	<servlet-mapping>
+		<servlet-name>CXFServlet</servlet-name>
+		<url-pattern>/*</url-pattern>
+	</servlet-mapping>
+</web-app>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/src/main/webapp/index.jsp	Thu Jun 16 17:33:06 2011 +0200
@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>
--- a/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java	Wed Jun 08 17:06:03 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,187 +0,0 @@
-package info.textgrid.middleware.digilib.services.scaler;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import javax.activation.DataHandler;
-import javax.jws.WebService;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Holder;
-import javax.xml.ws.soap.SOAPBinding;
-
-import digilib.image.ImageJobDescription;
-import digilib.image.ImageLoaderDocuImage;
-import digilib.image.ImageOpException;
-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;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.AuthFault;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.IoFault;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.MetadataParseFault;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.ObjectNotFoundFault;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.ProtocolNotImplementedFault;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.TGCrudService;
-import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.TGCrudService_Service;
-
-@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 Scaler implements DigilibService {
-
-    @Override
-    public void getScaledImage(String sessionId, String uri, String query,
-            String logParameter, Holder<String> mimeType,
-            Holder<byte[]> imageData, Holder<Integer> width,
-            Holder<Integer> height) {
-
-        System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter);
-
-        // Get TG-crud service.
-        String serverUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; // p.getProperty("crud_serverUrl");
-        URL location = null;
-        try {
-            location = new URL(serverUrl);
-        } catch (MalformedURLException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-
-        System.out.println("TG-crud WSDL location: " + location.getProtocol()
-                + "://" + location.getHost() + ":"
-                + (location.getPort() == -1 ? "80" : location.getPort())
-                + location.getPath());
-
-        // Create TG-crud service stub.
-        if (serverUrl != null) {
-            // Use MTOM stub.
-            TGCrudService_Service service = new TGCrudService_Service(location);
-            TGCrudService tgcrud = service.getTGCrudPort();
-            BindingProvider bindingProvider = (BindingProvider) tgcrud;
-            SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding();
-            binding.setMTOMEnabled(true);
-
-            // Create holders.
-            Holder<MetadataContainerType> metadataHolder = new Holder<MetadataContainerType>();
-            Holder<DataHandler> dataHolder = new Holder<DataHandler>();
-
-            // Start #READ operation.
-            try {
-                String theSessionId = sessionId;
-                String theLogParameter = logParameter;
-                String theUri = uri;
-                String mode = "digilib";
-                long startTime = System.currentTimeMillis();
-                tgcrud.read(theSessionId, theLogParameter, theUri,
-                        metadataHolder, dataHolder);
-                System.out.println(Long.toString(System.currentTimeMillis()
-                        - startTime)
-                        + " ms");
-                System.out.println("READ: Title="
-                        + metadataHolder.value.getObject().getGeneric()
-                                .getProvided().getTitle().get(0));
-                InputStream istream = dataHolder.value.getInputStream();
-                String mt = metadataHolder.value.getObject().getGeneric().getProvided().getFormat();
-                System.out.println("Stream="+istream.toString()+" type="+mt);
-                if (mode.equalsIgnoreCase("digilib")) {
-                    // try scaling
-                    DigilibConfiguration dlConfig = new DigilibConfiguration();
-                    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);
-                    // use image worker
-                    ImageWorker digilib = new ImageWorker(dlConfig, job);
-                    System.out.println("Scaling with "+digilib);
-                    digilib.call();
-                    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";
-                    width.value = img.getWidth();
-                    height.value = img.getHeight();
-                    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");
-                    OutputStream ostream = new FileOutputStream(f);
-                    byte[] data = new byte[1024];
-                    int l = istream.read(data);
-                    while (l > -1) {
-                        ostream.write(data, 0, l);
-                        l = istream.read(data);
-                    }
-                    ostream.close();
-                    System.out.println(Long.toString(System.currentTimeMillis()
-                            - startTime)
-                            + " ms");
-                    System.out.println("Done writing " + f);
-                }
-            } catch (ObjectNotFoundFault e) {
-                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
-                // e.getClass().getSimpleName()));
-                e.printStackTrace();
-            } catch (MetadataParseFault e) {
-                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
-                // e.getClass().getSimpleName()));
-                e.printStackTrace();
-            } catch (IoFault e) {
-                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
-                // e.getClass().getSimpleName()));
-                e.printStackTrace();
-            } catch (ProtocolNotImplementedFault e) {
-                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
-                // e.getClass().getSimpleName()));
-                e.printStackTrace();
-            } catch (AuthFault e) {
-                // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
-                // e.getClass().getSimpleName()));
-                e.printStackTrace();
-            } catch (IOException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            } catch (ImageOpException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-
-        } else {
-            System.out.println("No TG-crud server WSDL URL given!");
-            // assertTrue(false);
-        }
-    }
-
-}
--- a/src/main/webapp/WEB-INF/DigilibService.wsdl	Wed Jun 08 17:06:03 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="DigilibService" targetNamespace="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService">
-  <wsdl:types>
-    <xsd:schema targetNamespace="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService">
-      <xsd:element name="getScaledImage">
-        <xsd:complexType>
-          <xsd:sequence>
-            <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" 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>
-    </xsd:schema>
-  </wsdl:types>
-  <wsdl:message name="getScaledImageRequest">
-    <wsdl:part element="tns:getScaledImage" name="parameters"/>
-  </wsdl:message>
-  <wsdl:message name="getScaledImageResponse">
-    <wsdl:part element="tns:getScaledImageResponse" name="parameters"/>
-  </wsdl:message>
-  <wsdl:portType name="DigilibService">
-    <wsdl:operation name="getScaledImage">
-      <wsdl:input message="tns:getScaledImageRequest"/>
-      <wsdl:output message="tns:getScaledImageResponse"/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="DigilibServiceSOAP" type="tns:DigilibService">
-    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="getScaledImage">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/digilib/services/DigilibService/NewOperation"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="DigilibService">
-    <wsdl:port binding="tns:DigilibServiceSOAP" name="DigilibServiceSOAP">
-      <soap:address location="http://localhost:8080/digilibservice/service"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
--- a/src/main/webapp/WEB-INF/beans.xml	Wed Jun 08 17:06:03 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xmlns:jaxws="http://cxf.apache.org/jaxws"
-      xmlns:jaxrs="http://cxf.apache.org/jaxrs"
-      xsi:schemaLocation="
-http://www.springframework.org/schema/beans
-http://www.springframework.org/schema/beans/spring-beans.xsd
-http://cxf.apache.org/jaxws
-http://cxf.apache.org/schemas/jaxws.xsd
-http://cxf.apache.org/jaxrs
-http://cxf.apache.org/schemas/jaxrs.xsd
-">
-
-  <description>
-    Configuration digilibservice
-  </description>
-  
-  <import resource="classpath:META-INF/cxf/cxf.xml"/>
-  <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
-  <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
-  <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
-  
-  <!-- Here the REST-Service Endpoint Beans -->
-  <bean id="scaler" class="info.textgrid.middleware.digilib.services.scaler.Scaler">
-  </bean>
-
-    <jaxws:endpoint id="digilibservice" wsdlLocation="/WEB-INF/DigilibService.wsdl" 
-    implementor="#scaler" address="/service">
-    </jaxws:endpoint>
-
-  <!-- Rest-Endpoint Configuration
-  <jaxrs:server id="root" address="/rest">
-        <jaxrs:serviceBeans>
-            <ref bean="rest" />
-        </jaxrs:serviceBeans>
-  </jaxrs:server>  -->
-                  
-</beans> 
--- a/src/main/webapp/WEB-INF/web.xml	Wed Jun 08 17:06:03 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
-<web-app>
-
-	<display-name>TGSearch Webservice - public instance</display-name>
-
-	<context-param>
-		<param-name>contextConfigLocation</param-name>
-		<param-value>WEB-INF/beans.xml</param-value>
-	</context-param>
-	<listener>
-		<listener-class>
-			org.springframework.web.context.ContextLoaderListener
-		</listener-class>
-	</listener>
-
-	<servlet>
-		<servlet-name>CXFServlet</servlet-name>
-		<display-name>CXF Servlet</display-name>
-		<servlet-class>
-			org.apache.cxf.transport.servlet.CXFServlet
-        </servlet-class>
-		<load-on-startup>1</load-on-startup>
-	</servlet>
-
-	<servlet-mapping>
-		<servlet-name>CXFServlet</servlet-name>
-		<url-pattern>/*</url-pattern>
-	</servlet-mapping>
-</web-app>
--- a/src/main/webapp/index.jsp	Wed Jun 08 17:06:03 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<html>
-<body>
-<h2>Hello World!</h2>
-</body>
-</html>