chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roberto Gómez <roberto.go...@queres.com>
Subject Unable to get the newly created folder with the getChildren() method, unless wait for a while
Date Thu, 10 May 2012 14:23:57 GMT
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 info@queres.es


Mime
View raw message