Hi,
I'am unable to get the newly created folder with the getChildren()
method. It's worth to note, however, that after the creation I can
confirm the existence of the newly created folder, but on calling
getChildren() this new folder is not returned unless you wait a while.
Please see below junit test. The method testCreateFolder fails, but
testCreateFolderWait doesn't fail. Note, I have the cmis client cache
dissabled.
I'am ussing apache-chemistry-0.7.0 against and Alfresco-community-4.0.b.
Is that a bug or I'am ussing wrong the client ?
Thank you.
public class DevelopSurefireTest {
final Logger logger = LoggerFactory.getLogger(DevelopSurefireTest.class);
private static Session session;
@BeforeClass
public static void BeforeClass(){
session = login("http://192.168.0.4:8080/alfresco/s/cmis", "admin","admin");
}
@Test
public void failSafeTest() {
assertTrue(true); // Para que no falle en caso de que no haya más tests
}
@Test
public void testCreateFolder() {
String rootFolderId = session.getRootFolder().getId();
String folderName = UUID.randomUUID().toString();
Folder f = createFolder(rootFolderId, folderName);
assertEquals(folderName, ((Folder)getObjectById(f.getId())).getName());
assertEquals(0, getFolders(f.getId()).size());
Folder f2 = createFolder(f.getId(), folderName.concat("2"));
assertTrue(exists(f2.getId()));
assertEquals(1, getFolders(f.getId()).size());
}
@Test
public void testCreateFolderWait() throws InterruptedException {
String rootFolderId = session.getRootFolder().getId();
String folderName = UUID.randomUUID().toString();
Folder f = createFolder(rootFolderId, folderName);
assertEquals(folderName, ((Folder)getObjectById(f.getId())).getName());
assertEquals(0, getFolders(f.getId()).size());
Folder f2 = createFolder(f.getId(), folderName.concat("2"));
assertTrue(exists(f2.getId()));
while( getFolders(f.getId()).size() != 1){
Thread.sleep(2000);
}
assertEquals(1, getFolders(f.getId()).size());
}
public boolean exists(String objectId) throws CmisClientException {
boolean exists;
try {
CmisObject o = getObjectById(objectId);
exists = (o != null);
} catch (CmisObjectNotFoundException e) {
exists = false;
}
return exists;
}
public Folder createFolder(String parentId, String folderName) throws
CmisClientException {
Map<String, String> newFolderProps = new HashMap<String, String>();
newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
newFolderProps.put(PropertyIds.NAME, folderName);
Folder newFolder =
((Folder)getObjectById(parentId)).createFolder(newFolderProps);
return newFolder;
}
public Set<Folder> getFolders(String folderId) throws CmisClientException {
Set<Folder> childFolders = new HashSet<Folder>();
Iterator<CmisObject> it =
((Folder)getObjectById(folderId)).getChildren().iterator();
while (it.hasNext()) {
CmisObject obj = it.next();
if (obj instanceof Folder) {
childFolders.add((Folder) obj);
}
}
return childFolders;
}
private CmisObject getObjectById(String id) throws CmisClientException {
OperationContext oc = session.createOperationContext();
oc.setCacheEnabled(false);
return session.getObject(id, oc);
}
public static Session login(String url, String username, String pass)
throws CmisClientException {
SessionFactory factory = SessionFactoryImpl.newInstance();
Map<String, String> parameters = new HashMap<String, String>();
// user credentials
parameters.put(SessionParameter.USER, username);
parameters.put(SessionParameter.PASSWORD, pass);
// connection settings
parameters.put(SessionParameter.ATOMPUB_URL, url);
parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
parameters.put(SessionParameter.COMPRESSION, "true");
List<Repository> repositories = factory.getRepositories(parameters);
Repository cmisRepo = repositories.get(0); // Generalmente solo se
expone un repositorio
Session s = cmisRepo.createSession();
//
http://chemistry.apache.org/java/opencmis-cookbook.html#understanding_the_client_side_cache
s.getDefaultContext().setCacheEnabled(false);
RepositoryInfo repositoryInfo = s.getRepositoryInfo();
return s;
}
}
--
---
Roberto Gómez López
Queres Tecnologías
http://www.queres.es
Tlf. +34 981 90 90 10
Este correo electrónico contiene información estrictamente confidencial y es de
uso exclusivo del destinatario, quedando prohibida a cualquier otra persona su
revelación, copia, distribución, o el ejercicio de cualquier acción relativa a
su contenido. Si ha recibido este mensaje por error, por favor conteste a su
remitente mediante correo electrónico y proceda a borrarlo de su sistema.
Rogamos nos comunique inmediatamente sobre cualquier inconveniente que pueda
tener usted en relación al envío de este tipo de correo electrónico.
Sus datos personales serán tratados de forma confidencial y no serán cedidos a
terceros ajenos a QUERES TECNOLOGÍAS, S.L. En cualquier caso, podrá ejercer los
derecho de oposición, acceso, rectificación y cancelación de acuerdo con lo
establecido en la Ley Orgánica 15/99, de 13 de diciembre, de Protección de
Datos de Carácter Personal dirigiéndose a QUERES TECNOLOGÍAS, S.L. en C/Vulcano
1, 15172 Oleiros – A Coruña o en la dirección electrónico [email protected]