Hi,

 

I am trying to get a list of all archived packages from the Drools repository but I can’t seem to get packages that have been archived.

Below is the query I am using to get a list of archived packages:

 

RulesRepository repo = createRepository();  

 

PackageItem item = repo.createPackage( "testPackage", "A test" );

item.archiveItem( true );

item.checkin( "Archive test" );

 

System.out.println( "Archived=" + repo.loadPackageByUUID( item.getUUID() ).isArchived());

 

String sql = "SELECT "

      + PackageItem.TITLE_PROPERTY_NAME + ", "

      + PackageItem.DESCRIPTION_PROPERTY_NAME + ", "

      + PackageItem.CONTENT_PROPERTY_ARCHIVE_FLAG;

sql += " FROM " + PackageItem.RULE_PACKAGE_TYPE_NAME;

sql += " WHERE ";

sql += " jcr:path LIKE '/"

      + RulesRepository.RULES_REPOSITORY_NAME + "/"

      + RulesRepository.RULE_PACKAGE_AREA + "/%'";

//sql += " AND " + PackageItem.CONTENT_PROPERTY_ARCHIVE_FLAG + " = 'true'";

 

Query q = repo.getSession().getWorkspace().getQueryManager().createQuery( sql, Query.SQL );

 

QueryResult res = q.execute();

 

Iterator<PackageItem> it = new PackageIterator( repo, res.getNodes() );

 

while( it.hasNext() )

{

      PackageItem pi = it.next();

      System.out.println( "*****  item=" +pi.getUUID() + ", name=" +pi.getName() + ", isArchived=" + pi.isArchived() );

}

 

If I don’t archive a package then the code returns my package. I know that the package is archived because if I do

loadPackageByUUID( uuid ).isArchived()” it return true.

 

Does anyone know what I am doing wrong here?

 

Thanks,

 

Len