@@ -27,46 +27,28 @@
*/
package org.gofleet.openLS.ddbb.dao;

import java.io.StringReader;
import java.io.StringWriter;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Array;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import net.opengis.gml.v_3_1_1.CoordinatesType;
import net.opengis.gml.v_3_1_1.LineStringType;
import net.opengis.xls.v_1_2_0.AbstractLocationType;
import net.opengis.xls.v_1_2_0.AbstractResponseParametersType;
import net.opengis.xls.v_1_2_0.AddressType;
import net.opengis.xls.v_1_2_0.DetermineRouteRequestType;
import net.opengis.xls.v_1_2_0.DetermineRouteResponseType;
import net.opengis.xls.v_1_2_0.DirectoryRequestType;
import net.opengis.xls.v_1_2_0.DirectoryResponseType;
import net.opengis.xls.v_1_2_0.DistanceType;
import net.opengis.xls.v_1_2_0.GeocodeRequestType;
import net.opengis.xls.v_1_2_0.GeocodeResponseListType;
import net.opengis.xls.v_1_2_0.GeocodeResponseType;
import net.opengis.xls.v_1_2_0.GeocodedAddressType;
import net.opengis.xls.v_1_2_0.NamedPlaceClassification;
import net.opengis.xls.v_1_2_0.NamedPlaceType;
import net.opengis.xls.v_1_2_0.PositionType;
import net.opengis.xls.v_1_2_0.ReverseGeocodeRequestType;
import net.opengis.xls.v_1_2_0.ReverseGeocodeResponseType;
import net.opengis.xls.v_1_2_0.RouteGeometryType;
import net.opengis.xls.v_1_2_0.RouteHandleType;
import net.opengis.xls.v_1_2_0.RouteInstructionsListType;
import net.opengis.xls.v_1_2_0.RouteMapType;
import net.opengis.xls.v_1_2_0.RouteSummaryType;
import net.opengis.xls.v_1_2_0.WayPointListType;
import net.opengis.xls.v_1_2_0.WayPointType;
import net.opengis.xls.v_1_2_0.ReverseGeocodedLocationType;
import net.opengis.xls.v_1_2_0.StreetAddressType;
import net.opengis.xls.v_1_2_0.StreetNameType;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -82,25 +64,14 @@
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.PrecisionModel;
import com.vividsolutions.jts.io.WKTReader;

@Repository
public class GeoCodingDAO {
private static final String GID_ROUTING = "id";

private static final String TABLE_ROUTING = "routing";

@SuppressWarnings("unused")
private static final String EPSG_4326 = "EPSG:4326";

private static final String TS = " ";

private static final String CS = ",";

private HibernateTemplate hibernateTemplate;

public static Log LOG = LogFactory.getLog(GeoCodingDAO.class);
@@ -111,174 +82,88 @@ public void setSessionFactory(SessionFactory sessionFactory) {
}

@Transactional(readOnly = true)
public DetermineRouteResponseType routePlan(
final DetermineRouteRequestType param) {
HibernateCallback<DetermineRouteResponseType> action = new HibernateCallback<DetermineRouteResponseType>() {

public DetermineRouteResponseType doInHibernate(Session session)
throws HibernateException, SQLException {
CallableStatement consulta = session.connection().prepareCall(
"{call gls_tsp(?,?,?,?)}");

WayPointListType wayPointList = param.getRoutePlan()
.getWayPointList();
Integer source = getSourcePoint(wayPointList);
Array stopTable = getStopTables(session, wayPointList);

consulta.setString(1, TABLE_ROUTING);
consulta.setArray(2, stopTable);
consulta.setString(3, GID_ROUTING);
consulta.setInt(4, source);

return getRouteResponse(consulta.executeQuery());

}

private Integer getSourcePoint(WayPointListType wayPointList) {
WayPointType startPoint = wayPointList.getStartPoint();
AbstractLocationType pType = startPoint.getLocation()
.getValue();

// TODO
// Geometry geom = geocoding.geocoding(param)

Integer source = new Integer(10);
return source;
}

private Array getStopTables(Session session,
WayPointListType wayPointList) throws SQLException {
List<Integer> stops = new ArrayList<Integer>();
for (WayPointType wayPoint : wayPointList.getViaPoint())
stops.add(20);

// TODO

Array stopTable = session.connection().createArrayOf("int4",
stops.toArray(new Integer[] {}));
return stopTable;
}

private DetermineRouteResponseType getRouteResponse(
ResultSet resultado) throws SQLException {
public List<List<AbstractResponseParametersType>> reverseGeocode(
final ReverseGeocodeRequestType param) {
HibernateCallback<List<List<AbstractResponseParametersType>>> action = new HibernateCallback<List<List<AbstractResponseParametersType>>>() {
public List<List<AbstractResponseParametersType>> doInHibernate(
Session session) throws HibernateException, SQLException {

DetermineRouteResponseType res = new DetermineRouteResponseType();
if (resultado.next()) {
String[][] array = (String[][]) ((Jdbc4Array) resultado
.getArray(1)).getArray();
List<List<AbstractResponseParametersType>> res = new LinkedList<List<AbstractResponseParametersType>>();
PositionType position = param.getPosition();

if (LOG.isTraceEnabled()) {
for (String[] step : array)
LOG.trace("Going to " + step[0] + " at cost "
+ step[1] + " using " + step[2]);
}
Geometry geometry = GeoUtil.getGeometry(position);

WKTReader wktReader = new WKTReader();
List<Coordinate> coordinates = new LinkedList<Coordinate>();
Double cost = 0d;
List<AbstractResponseParametersType> res_ = new LinkedList<AbstractResponseParametersType>();

for (String[] step : array) {
try {
Geometry geometry = wktReader.read(step[2]);
for (Coordinate coord : geometry.getCoordinates())
coordinates.add(coord);
cost += new Double(step[1]);
} catch (Exception e) {
LOG.error("Unknown Geometry", e);
// TODO change deprecation?
@SuppressWarnings("deprecation")
CallableStatement consulta = session.connection().prepareCall(
"{call gls_reverse_geocoding(?)}");

consulta.setObject(1, geometry);

LOG.debug(consulta);

ResultSet o = consulta.executeQuery();
ReverseGeocodeResponseType grt = new ReverseGeocodeResponseType();
while (o.next()) {
ReverseGeocodedLocationType geocode = new ReverseGeocodedLocationType();
if (geocode.getAddress() == null)
geocode.setAddress(new AddressType());
if (geocode.getAddress().getStreetAddress() == null)
geocode.getAddress().setStreetAddress(
new StreetAddressType());
for (int i = 1; i < o.getMetaData().getColumnCount(); i++) {
if (o.getMetaData().getColumnName(i).equals("street")) {
StreetNameType street = new StreetNameType();
street.setValue(o.getString(i));
street.setOfficialName(o.getString(i));
geocode.getAddress().getStreetAddress().getStreet()
.add(street);
} else if (o.getMetaData().getColumnName(i)
.equals("munsub")) {
NamedPlaceType place = new NamedPlaceType();
place.setValue(o.getString(i));
place.setType(NamedPlaceClassification.MUNICIPALITY_SUBDIVISION);
geocode.getAddress().getPlace().add(place);
} else if (o.getMetaData().getColumnName(i)
.equals("mun")) {
NamedPlaceType place = new NamedPlaceType();
place.setValue(o.getString(i));
place.setType(NamedPlaceClassification.MUNICIPALITY);
geocode.getAddress().getPlace().add(place);
} else if (o.getMetaData().getColumnName(i)
.equals("subcountry")) {
NamedPlaceType place = new NamedPlaceType();
place.setValue(o.getString(i));
place.setType(NamedPlaceClassification.COUNTRY_SUBDIVISION);
geocode.getAddress().getPlace().add(place);
} else if (o.getMetaData().getColumnName(i)
.equals("country")) {
geocode.getAddress().setCountryCode(o.getString(i));
}
}

RouteGeometryType routeGeometry;
try {
routeGeometry = getRouteGeometry(coordinates);
res.setRouteGeometry(routeGeometry);
} catch (JAXBException e) {
LOG.error(e, e);

grt.getReverseGeocodedLocation().add(geocode);
} catch (Throwable t) {
LOG.error("Error extracting data from database.", t);
}
res_.add(grt);

res.setRouteHandle(getRouteHandle(coordinates));
res.setRouteInstructionsList(getInstructionsList(coordinates));
res.setRouteMap(getRouteMap(coordinates));
res.setRouteSummary(getRouteSummary(cost));
res.add(res_);
}
return res;
}

private RouteSummaryType getRouteSummary(Double cost) {
RouteSummaryType res = new RouteSummaryType();
DistanceType coste = new DistanceType();
coste.setValue(BigDecimal.valueOf(cost));
res.setTotalDistance(coste);
return res;
}

private List<RouteMapType> getRouteMap(List<Coordinate> lineStrings) {
List<RouteMapType> res = new ArrayList<RouteMapType>(0);
return res;
}

private RouteInstructionsListType getInstructionsList(
List<Coordinate> lineStrings) {
RouteInstructionsListType res = new RouteInstructionsListType();
return res;
}

private RouteHandleType getRouteHandle(List<Coordinate> lineStrings) {
RouteHandleType handleType = new RouteHandleType();
handleType.setRouteID("-1");
handleType.setServiceID("-1");
return handleType;
}

private RouteGeometryType getRouteGeometry(
List<Coordinate> lineStrings) throws JAXBException {
LineString line = (new GeometryFactory(new PrecisionModel(),
4326)).createLineString(lineStrings
.toArray(new Coordinate[] {}));

JAXBContext context = JAXBContext
.newInstance("org.jvnet.ogc.gml.v_3_1_1.jts");

if (LOG.isTraceEnabled())
context.createMarshaller().marshal(line, System.out);

StringWriter writer = new StringWriter();
context.createMarshaller().marshal(line, writer);

Unmarshaller unmarshaller = JAXBContext.newInstance(
LineStringType.class).createUnmarshaller();
StringReader reader = new StringReader(writer.toString());

@SuppressWarnings("unchecked")
JAXBElement<LineStringType> lineElement = (JAXBElement<LineStringType>) unmarshaller
.unmarshal(reader);

LineStringType lineString = lineElement.getValue();

RouteGeometryType routeGeometry = new RouteGeometryType();
routeGeometry.setLineString(lineString);
return routeGeometry;
}

private CoordinatesType getCoordinatesType() {
CoordinatesType coordinateType = new CoordinatesType();
coordinateType.setCs(CS);
coordinateType.setTs(TS);
return coordinateType;
}
};
return hibernateTemplate.executeWithNativeSession(action);
}

@Transactional(readOnly = true)
public DirectoryResponseType directory(DirectoryRequestType param) {
// TODO Auto-generated method stub
return null;
return hibernateTemplate.executeWithNativeSession(action);
}

@Transactional(readOnly = true)
public ReverseGeocodeResponseType reverseGeocode(
ReverseGeocodeRequestType param) {
public List<List<AbstractResponseParametersType>> directory(
DirectoryRequestType param) {
// TODO Auto-generated method stub
return null;
}
@@ -296,6 +181,8 @@ public List<List<AbstractResponseParametersType>> doInHibernate(
for (AddressType addressType : addressList) {
List<AbstractResponseParametersType> res_ = new LinkedList<AbstractResponseParametersType>();

// TODO change deprecation?
@SuppressWarnings("deprecation")
CallableStatement consulta = session.connection()
.prepareCall("{call gls_geocoding(?, ?, ?, ?, ?)}");

@@ -325,12 +212,12 @@ public List<List<AbstractResponseParametersType>> doInHibernate(
GeocodedAddressType addresstype = new GeocodedAddressType();
addresstype.setPoint(GeoUtil.getReferencedPoint(g));
addresstype.setAddress(GeoUtil.getAddress(address));

geocode.getGeocodedAddress().add(addresstype);

geocode.setNumberOfGeocodedAddresses(BigInteger
.valueOf(1l));

grt.getGeocodeResponseList().add(geocode);
} catch (Throwable t) {
LOG.error("Error extracting data from database.", t);
@@ -30,7 +30,6 @@
import java.io.StringReader;
import java.io.StringWriter;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Array;
import java.sql.CallableStatement;
import java.sql.ResultSet;
@@ -45,7 +44,6 @@
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import net.opengis.gml.v_3_1_1.CoordinatesType;
import net.opengis.gml.v_3_1_1.LineStringType;
import net.opengis.xls.v_1_2_0.DetermineRouteRequestType;
import net.opengis.xls.v_1_2_0.DetermineRouteResponseType;
@@ -89,16 +87,14 @@ public class RoutingDAO {

private static final String TABLE_ROUTING = "routing";

@SuppressWarnings("unused")
private static final String EPSG_4326 = "EPSG:4326";

private static final String TS = " ";

private static final String CS = ",";

private HibernateTemplate hibernateTemplate;

private static Log LOG = LogFactory.getLog(RoutingDAO.class);

@SuppressWarnings("unused")
@Resource
private GeoCoding geocoding;

@@ -140,6 +136,8 @@ public DetermineRouteResponseType routePlan(

public DetermineRouteResponseType doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO change deprecation?
@SuppressWarnings("deprecation")
CallableStatement consulta = session.connection().prepareCall(
"{call gls_tsp(?,?,?,?)}");

@@ -180,6 +178,8 @@ private Array getStopTables(Session session,
if (vertex != null)
stops.add(vertex.intValue());

// TODO change deprecation?
@SuppressWarnings("deprecation")
Array stopTable = session.connection().createArrayOf("int4",
stops.toArray(new Integer[] {}));
return stopTable;
@@ -208,7 +208,7 @@ private DetermineRouteResponseType getRouteResponse(
try {
Integer current = new Integer(step[0]);
LOG.trace("Comparing " + current + " with " + last);
if(!current.equals(last)) {
if (!current.equals(last)) {
Geometry geometry = wktReader.read(step[2]);
LOG.trace(geometry);
for (Coordinate coord : geometry
@@ -295,13 +295,6 @@ private RouteGeometryType getRouteGeometry(
routeGeometry.setLineString(lineString);
return routeGeometry;
}

private CoordinatesType getCoordinatesType() {
CoordinatesType coordinateType = new CoordinatesType();
coordinateType.setCs(CS);
coordinateType.setTs(TS);
return coordinateType;
}
};
return hibernateTemplate.executeWithNativeSession(action);
}

This file was deleted.

@@ -2,10 +2,15 @@

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import net.opengis.gml.v_3_1_1.AbstractRingPropertyType;
import net.opengis.gml.v_3_1_1.CoordType;
import net.opengis.gml.v_3_1_1.DirectPositionType;
import net.opengis.gml.v_3_1_1.LinearRingType;
import net.opengis.gml.v_3_1_1.PointType;
import net.opengis.gml.v_3_1_1.PolygonType;
import net.opengis.xls.v_1_2_0.AddressType;
import net.opengis.xls.v_1_2_0.NamedPlaceClassification;
import net.opengis.xls.v_1_2_0.NamedPlaceType;
@@ -23,7 +28,9 @@
import org.postgresql.jdbc4.Jdbc4Array;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LinearRing;

/*
* Copyright (C) 2011, Emergya (http://www.emergya.es)
@@ -197,6 +204,8 @@ public static String extractSubCountry(AddressType address) {

public static com.vividsolutions.jts.geom.Point getPoint(
WayPointType startPoint) {

// TODO what if we don't receive coordinates?
PositionType ptype = (PositionType) startPoint.getLocation().getValue();
PointType pointType = ptype.getPoint();
DirectPositionType ctype = pointType.getPos();
@@ -206,4 +215,39 @@ public static com.vividsolutions.jts.geom.Point getPoint(
.getValue().get(1)));
return p;
}

public static com.vividsolutions.jts.geom.Geometry getGeometry(
PositionType position) {

Geometry g = null;
if (position.getPoint() != null
&& position.getPoint().getCoord() != null
&& position.getPoint().getCoord().getX() != null) {
g = geomFact.createPoint(new Coordinate(position.getPoint()
.getCoord().getX().doubleValue(), position.getPoint()
.getCoord().getY().doubleValue()));
} else if (position.getPolygon() != null) {
PolygonType polygon = position.getPolygon();

List<LinearRing> interiorRings = new LinkedList<LinearRing>();
polygon.getInterior();
// TODO
LinearRing[] holes = interiorRings.toArray(new LinearRing[] {});

List<Coordinate> coordinateList = new LinkedList<Coordinate>();
AbstractRingPropertyType exterior = polygon.getExterior()
.getValue();
LinearRingType ring = (LinearRingType) exterior.getRing()
.getValue();
for (CoordType coord : ring.getCoord()) {
coordinateList.add(new Coordinate(coord.getX().doubleValue(),
coord.getY().doubleValue()));
}
Coordinate[] coordinates = coordinateList
.toArray(new Coordinate[] {});
LinearRing shell = geomFact.createLinearRing(coordinates);
g = geomFact.createPolygon(shell, holes);
}
return g;
}
}
@@ -225,6 +225,7 @@ public static Object convertOMElement2Object(OMElement parameter,
* @return
* @throws AxisFault
*/
@SuppressWarnings("rawtypes")
public static Object convertOMElement2Object(OMElement parameter,
Class<?> classType, boolean useType) throws JAXBException,
XMLStreamException, FactoryConfigurationError, SAXException {
@@ -3,8 +3,6 @@
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

import org.xml.sax.helpers.XMLFilterImpl;

/**
* Helper class found on this url:
* http://stackoverflow.com/questions/277502/jaxb
@@ -32,25 +32,21 @@
import static org.junit.Assert.assertTrue;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLStreamException;

import net.opengis.gml.v_3_1_1.DirectPositionType;
import net.opengis.gml.v_3_1_1.PointType;
import net.opengis.xls.v_1_2_0.AbstractBodyType;
import net.opengis.xls.v_1_2_0.AbstractResponseParametersType;
import net.opengis.xls.v_1_2_0.AddressType;
import net.opengis.xls.v_1_2_0.GeocodeResponseListType;
import net.opengis.xls.v_1_2_0.GeocodeResponseType;
import net.opengis.xls.v_1_2_0.GeocodedAddressType;
import net.opengis.xls.v_1_2_0.PositionType;
import net.opengis.xls.v_1_2_0.ResponseType;
import net.opengis.xls.v_1_2_0.ReverseGeocodeRequestType;
import net.opengis.xls.v_1_2_0.ReverseGeocodeResponseType;
import net.opengis.xls.v_1_2_0.ReverseGeocodedLocationType;
import net.opengis.xls.v_1_2_0.XLSType;
@@ -77,49 +73,65 @@ public class GeoCodingTest {
OpenLS openLS;

@Test
public void testReverseGeocoding() {

// Lista de valores del punto
ArrayList<Double> list = new ArrayList<Double>();
list.add(37.38);
list.add(-5.99);

// Punto que dará contenido al parámetro de entrada
PointType point = new PointType();
DirectPositionType pos = new DirectPositionType();
pos.setValue(list);
point.setPos(pos);

// Posición de prueba para el parámetro
PositionType position = new PositionType();
position.setPoint(point);

// Parametros del servicio
ReverseGeocodeRequestType param = new ReverseGeocodeRequestType();
param.setPosition(position);
assertNotNull(param);

// Servicio de geocoding al que se le introduce los parametros
ReverseGeocodeResponseType res = geocoding.reverseGeocode(param);
assertNotNull(res);

List<ReverseGeocodedLocationType> res_array = res
.getReverseGeocodedLocation();
assertNotNull(res_array);
assertTrue(res_array.size() > 0);
for (ReverseGeocodedLocationType locationType : res_array) {
AddressType addressRes = locationType.getAddress();
PointType pointRes = locationType.getPoint();
// Comprobamos que cada parámetro de la dirección no sea nulo
assertNotNull(addressRes.getAddressee());
assertNotNull(addressRes.getLanguage());
assertNotNull(addressRes.getPostalCode());
assertNotNull(addressRes.getCountryCode());
// Comprobamos que el punto del resultado es el mismo que el del
// origen
assertTrue(pointRes.equals(point));
}
public void testReverseGeocoding() throws AxisFault, FileNotFoundException,
JAXBException, XMLStreamException, FactoryConfigurationError, SAXException {
OMElement resultado = openLS.openLS(Utils.convertFile2OMElement(
"/reverseGeocoding.xml", XLSType.class));

Object object = Utils.convertOMElement2Object(resultado, XLSType.class,
true);

assertTrue("This is no XLS object", object instanceof XLSType);

XLSType xls = (XLSType) object;

assertNotNull("The response is null", xls);

assertNotNull("The body is null.", xls.getBody());

List<JAXBElement<? extends AbstractBodyType>> body = xls.getBody();

assertNotNull("The body is null! How? We have just checked it!", body);

assertEquals("The body should have one single response", body.size(), 1);

for (JAXBElement<? extends AbstractBodyType> body_ : body) {
AbstractBodyType o = body_.getValue();

assertTrue("This is no response!", o instanceof ResponseType);

ResponseType response = (ResponseType) o;

assertNotNull("The contents of the body are null? (ResponseType)",
response);

assertEquals("I should have only one response", response
.getNumberOfResponses().intValue(), 1);

assertNotNull("Response parameters are null!",
response.getResponseParameters());

AbstractResponseParametersType arpt = response
.getResponseParameters().getValue();

assertNotNull(arpt);
assertTrue("The response is not a geocode response",
arpt instanceof ReverseGeocodeResponseType);

ReverseGeocodeResponseType res = (ReverseGeocodeResponseType) arpt;

List<ReverseGeocodedLocationType> res_array = res
.getReverseGeocodedLocation();
assertNotNull(res_array);
assertTrue(res_array.size() > 0);
for (ReverseGeocodedLocationType locationType : res_array) {
AddressType addressRes = locationType.getAddress();
assertNotNull(addressRes.getCountryCode());
assertNotNull(addressRes.getStreetAddress());
assertNotNull(addressRes.getStreetAddress().getStreet());
assertEquals(addressRes.getStreetAddress().getStreet().size(), 1);
}
}
}

@Test
@@ -14,6 +14,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.ExpectedException;
import org.springframework.test.annotation.Repeat;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -27,6 +28,7 @@ public class SimpleServiceTests {
static OMElement determineRouteRequest = null;
static OMElement geocodingRequest = null;
static OMElement reverseGeocodingRequest = null;
static OMElement directoryRequest = null;

@BeforeClass
public static void initialize() throws FileNotFoundException, JAXBException {
@@ -36,6 +38,8 @@ public static void initialize() throws FileNotFoundException, JAXBException {
XLSType.class);
reverseGeocodingRequest = Utils.convertFile2OMElement(
"/reverseGeocoding.xml", XLSType.class);
directoryRequest = Utils.convertFile2OMElement("/directory.xml",
XLSType.class);
}

@Test(timeout = 20000)
@@ -53,10 +57,10 @@ public void testEmptyGeocoding() throws AxisFault, FileNotFoundException,
}

@Test(timeout = 1000)
@ExpectedException(value = AxisFault.class)
public void testEmptyDirectory() throws AxisFault, FileNotFoundException,
JAXBException {
openLS.openLS(Utils.convertFile2OMElement("/directory.xml",
XLSType.class));
openLS.openLS(directoryRequest);
}

@Test(timeout = 5000)