# HG changeset patch # User casties # Date 1308238386 -7200 # Node ID 39c4892724ae87906846d05623118fe9d16f3464 # Parent 913bc132ed965a063a45cd86613935181506de98 new version with maven modules for service and client. diff -r 913bc132ed96 -r 39c4892724ae .hgignore --- 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 diff -r 913bc132ed96 -r 39c4892724ae client/pom.xml --- /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 @@ + + 4.0.0 + + digilibservice + info.textgrid + 1.0-SNAPSHOT + + info.textgrid + digilibservice-client + 1.0-SNAPSHOT + jar + + + org.apache.cxf + cxf + ${cxf.version} + pom + + + + + + + org.apache.cxf + cxf-codegen-plugin + ${cxf.version} + + + generate-digilibservice-client + generate-sources + + + + ../service/src/main/webapp/WEB-INF/DigilibService.wsdl + + + + + wsdl2java + + + + + + + \ No newline at end of file diff -r 913bc132ed96 -r 39c4892724ae client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java --- /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 mimeType = new Holder(); + Holder imageData = new Holder(); + Holder width = new Holder(); + Holder height = new Holder(); + // 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; + } + +} diff -r 913bc132ed96 -r 39c4892724ae pom.xml --- 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 @@ 4.0.0 info.textgrid digilibservice - war + pom 1.0-SNAPSHOT digilibservice Maven Webapp http://maven.apache.org @@ -12,6 +12,7 @@ 2.3.3 6.1.15 + info.textgrid.middleware @@ -54,6 +55,7 @@ compile + archiva.internal.http @@ -78,30 +80,8 @@ - - digilibservice - - - org.apache.cxf - cxf-codegen-plugin - ${cxf.version} - - - generate-digilibservice-sources - generate-sources - - - - src/main/webapp/WEB-INF/DigilibService.wsdl - - - - - wsdl2java - - - - - - + + service + client + diff -r 913bc132ed96 -r 39c4892724ae service/pom.xml --- /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 @@ + + 4.0.0 + + digilibservice + info.textgrid + 1.0-SNAPSHOT + + info.textgrid + digilibservice-service + war + 1.0-SNAPSHOT + + + info.textgrid.middleware + tgcrud-client + 1.2-BETA-SNAPSHOT + + + + junit + junit + 3.8.1 + test + + + org.apache.cxf + cxf + ${cxf.version} + pom + + + org.apache.cxf + cxf-rt-frontend-jaxrs + ${cxf.version} + + + org.apache.cxf + cxf-rt-frontend-jaxws + ${cxf.version} + + + org.apache.cxf + cxf-rt-transports-http + ${cxf.version} + + + digilib + digilib-common + 2.0-SNAPSHOT + jar + compile + + + + digilibservice + + + org.apache.cxf + cxf-codegen-plugin + ${cxf.version} + + + generate-digilibservice-sources + generate-sources + + + + src/main/webapp/WEB-INF/DigilibService.wsdl + + + + + wsdl2java + + + + + + + \ No newline at end of file diff -r 913bc132ed96 -r 39c4892724ae service/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java --- /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 mimeType, + Holder imageData, Holder width, + Holder 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 metadataHolder = new Holder(); + Holder dataHolder = new Holder(); + + // 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); + } + } + +} diff -r 913bc132ed96 -r 39c4892724ae service/src/main/webapp/WEB-INF/DigilibService.wsdl --- /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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 913bc132ed96 -r 39c4892724ae service/src/main/webapp/WEB-INF/beans.xml --- /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 @@ + + + + + Configuration digilibservice + + + + + + + + + + + + + + + + + diff -r 913bc132ed96 -r 39c4892724ae service/src/main/webapp/WEB-INF/web.xml --- /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 @@ + + + + + TGSearch Webservice - public instance + + + contextConfigLocation + WEB-INF/beans.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + + CXFServlet + CXF Servlet + + org.apache.cxf.transport.servlet.CXFServlet + + 1 + + + + CXFServlet + /* + + diff -r 913bc132ed96 -r 39c4892724ae service/src/main/webapp/index.jsp --- /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 @@ + + +

Hello World!

+ + diff -r 913bc132ed96 -r 39c4892724ae src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java --- 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 mimeType, - Holder imageData, Holder width, - Holder 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 metadataHolder = new Holder(); - Holder dataHolder = new Holder(); - - // 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); - } - } - -} diff -r 913bc132ed96 -r 39c4892724ae src/main/webapp/WEB-INF/DigilibService.wsdl --- 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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 913bc132ed96 -r 39c4892724ae src/main/webapp/WEB-INF/beans.xml --- 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 @@ - - - - - Configuration digilibservice - - - - - - - - - - - - - - - - - diff -r 913bc132ed96 -r 39c4892724ae src/main/webapp/WEB-INF/web.xml --- 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 @@ - - - - - TGSearch Webservice - public instance - - - contextConfigLocation - WEB-INF/beans.xml - - - - org.springframework.web.context.ContextLoaderListener - - - - - CXFServlet - CXF Servlet - - org.apache.cxf.transport.servlet.CXFServlet - - 1 - - - - CXFServlet - /* - - diff -r 913bc132ed96 -r 39c4892724ae src/main/webapp/index.jsp --- 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 @@ - - -

Hello World!

- -