/**
* Copyright (C) 2010 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.xcmis.wssoap;
import org.apache.cxf.endpoint.Server;
import org.xcmis.core.CmisObjectType;
import org.xcmis.core.CmisPropertiesType;
import org.xcmis.core.CmisPropertyId;
import org.xcmis.messaging.CmisExtensionType;
import org.xcmis.messaging.CmisObjectListType;
import org.xcmis.soap.VersioningServicePort;
import org.xcmis.spi.CmisConstants;
import org.xcmis.spi.model.IncludeRelationships;
import org.xcmis.wssoap.impl.TypeConverter;
import org.xcmis.wssoap.impl.VersioningServicePortImpl;
import java.util.List;
import javax.xml.ws.Holder;
public class VersioningServiceTest extends BaseTest
{
private VersioningServicePort port;
/** Service name. */
private final static String SERVICE_NAME = "VersioningService";
/** Address. */
private final static String SERVICE_ADDRESS = "http://localhost:8081/" + SERVICE_NAME;
/** Server. */
private Server server;
public void setUp() throws Exception
{
super.setUp();
server =
complexDeployService(SERVICE_ADDRESS, new VersioningServicePortImpl(), interceptors, null, true);
port = getVersioningService(SERVICE_ADDRESS);
assertNotNull(server);
assertNotNull(port);
}
public void testCheckOut() throws Exception
{
String id = createDocument(testFolderId, "doc1");
Holder<String> idHolder = new Holder<String>(id);
Holder<Boolean> contentCopiedHolder = new Holder<Boolean>();
port
.checkOut(repositoryId, idHolder, new Holder<CmisExtensionType>(new CmisExtensionType()), contentCopiedHolder);
CmisObjectListType checkedout = TypeConverter.getCmisObjectListType(conn.getCheckedOutDocs(//
testFolderId, //
false, // Allowable actions
IncludeRelationships.NONE, //
false, null, // Property filter
null, // Rendition filter
null, // Order by
10, // Max items
0 // Skip count
));
assertEquals(1, checkedout.getObjects().size());
conn.deleteObject(idHolder.value, true);
}
public void testCancelCheckOut() throws Exception
{
String id = createDocument(testFolderId, "doc1");
String pwcId = conn.checkout(id);
CmisObjectListType checkedout = TypeConverter.getCmisObjectListType(conn.getCheckedOutDocs(//
testFolderId, //
false, // Allowable actions
IncludeRelationships.NONE, //
false, null, // Property filter
null, // Rendition filter
null, // Order by
10, // Max items
0 // Skip count
));
assertEquals(1, checkedout.getObjects().size());
port.cancelCheckOut(repositoryId, pwcId, new CmisExtensionType());
// No more checked-out documents
checkedout = TypeConverter.getCmisObjectListType(conn.getCheckedOutDocs(//
testFolderId, //
false, // Allowable actions
IncludeRelationships.NONE, //
false, null, // Property filter
null, // Rendition filter
null, // Order by
10, // Max items
0 // Skip count
));
assertEquals(0, checkedout.getObjects().size());
conn.deleteObject(id, true);
}
public void testCheckIn() throws Exception
{
String id = createDocument(testFolderId, "doc1");
String pwcId = conn.checkout(id);
Holder<String> pwcHolder = new Holder<String>(pwcId);
CmisObjectType pwc =
TypeConverter.getCmisObjectType(conn.getObject(pwcId, false, IncludeRelationships.NONE, false, false, false,
null, null));
CmisPropertyId versionSeriesIdProp = (CmisPropertyId)getProperty(pwc, CmisConstants.VERSION_SERIES_ID);
String versionSeriesId = versionSeriesIdProp.getValue().get(0);
List<CmisObjectType> allVersions =
TypeConverter.getCmisObjectTypeList(conn.getAllVersions(versionSeriesId, false, false, null));
// assertEquals(1, allVersions.size());
assertEquals(2, allVersions.size());
port.checkIn(//
repositoryId, //
pwcHolder, //
true, // Major
new CmisPropertiesType(), // Properties
null, // Content stream
"comment", // Check-in comment
null, // Policies
null, // Add ACL
null, // Remove ACL
new Holder<CmisExtensionType>() // Extensions
);
allVersions = TypeConverter.getCmisObjectTypeList(conn.getAllVersions(versionSeriesId, false, false, null));
assertEquals(2, allVersions.size());
conn.deleteObject(id, true);
}
public void testGetAllVersions() throws Exception
{
String docId = createDocument(testFolderId, "doc1");
Thread.sleep(500);
String pwcId = conn.checkout(docId);
CmisObjectType pwc =
TypeConverter.getCmisObjectType(conn.getObject(pwcId, false, IncludeRelationships.NONE, false, false, false,
null, null));
CmisPropertyId versionSeriesIdProp = (CmisPropertyId)getProperty(pwc, CmisConstants.VERSION_SERIES_ID);
String versionSeriesId = versionSeriesIdProp.getValue().get(0);
conn.checkin(//
pwcId, //
true, // Major
null, // Properties
null, // Content stream
"", // Check-in comment
null, // Add ACL
null, // Remove ACL
null // Policies
);
List<CmisObjectType> allVersions = port.getAllVersions(repositoryId, versionSeriesId, null, false, null);
assertEquals(2, allVersions.size());
conn.deleteObject(docId, true);
}
public void testGetLatestVersionProperties() throws Exception
{
String id = createDocument(testFolderId, "doc1");
Thread.sleep(500);
String pwcId = conn.checkout(id);
CmisObjectType pwc =
TypeConverter.getCmisObjectType(conn.getObject(pwcId, false, IncludeRelationships.NONE, false, false, false,
null, null));
CmisPropertyId versionSeriesIdProp = (CmisPropertyId)getProperty(pwc, CmisConstants.VERSION_SERIES_ID);
String versionSeriesId = versionSeriesIdProp.getValue().get(0);
String lv = conn.checkin(//
pwcId, //
true, // Major
null, // Properties
null, // Content stream
"", // Check-in comment
null, // Add ACL
null, // Remove ACL
null // Policies
);
CmisPropertiesType properties = port.getPropertiesOfLatestVersion(//
repositoryId, //
versionSeriesId, //
false, //
CmisConstants.OBJECT_ID, //
new CmisExtensionType() //
);
assertEquals(lv, ((CmisPropertyId)properties.getProperty().get(0)).getValue().get(0));
conn.deleteObject(id, true);
}
private VersioningServicePort getVersioningService(String address)
{
try
{
org.apache.cxf.jaxws.JaxWsProxyFactoryBean client = new org.apache.cxf.jaxws.JaxWsProxyFactoryBean();
client.setServiceClass(VersioningServicePort.class);
client.setAddress(address);
Object obj = client.create();
return (VersioningServicePort)obj;
}
catch (Exception ex)
{
ex.printStackTrace();
}
return null;
}
protected void tearDown() throws Exception
{
server.stop();
super.tearDown();
}
}