Meta-Persistence ::= ( RESOURCE ( ‘,’ RESOURCE )* )?
Description: /** * Verify the Meta-Persistence header * * @throws Exception */
Date: 2019-10-12T19:48:23-04:00

- # Meta-Persistence ::= ( RESOURCE ( ',' RESOURCE )* )?

      /**
       * Verify the Meta-Persistence header
       *
       * @throws Exception
       */

      public void verifyMetaPersistence() throws Exception {
      	List<String> list = new ArrayList<String>();
      	String mp = dot.getManifest().getMainAttributes().getValue(META_PERSISTENCE);
      	for (String location : OSGiHeader.parseHeader(mp).keySet()) {
      		String[] parts = location.split("!/");

      		Resource resource = dot.getResource(parts[0]);
      		if (resource == null)
      			list.add(location);
      		else {
      			if (parts.length > 1) {
      				Jar jar = new Jar("", resource.openInputStream());
      				try {
      					resource = jar.getResource(parts[1]);
      					if (resource == null)
      						list.add(location);
      				}
      				catch (Exception e) {
      					list.add(location);
      				}
      				finally {
      					jar.close();
      				}
      			}
      		}
      	}
      	if (list.isEmpty())
      		return;

      	error(Constants.META_PERSISTENCE + " refers to resources not in the bundle: %s", list).header(Constants.META_PERSISTENCE);
      }