Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2008 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.osgi.internal.signedcontent;
 
 import java.util.*;
 
 /*
  * This class is used by the SignedContentFactory to create SignedContent objects from File objects.  This is needed 
  * to avoid leaving the underlying ZipFiles open for the SignedContent objects returned from the 
  * SignedContentFactory (bug 225090) 
  */
 public class SignedContentFile implements SignedContent {
 
 	private final SignedContentImpl signedContent;
 	// a cache of verification exceptions
 	private HashMap entryExceptions = null;
 
 	public SignedContentFile(SignedContentImpl signedContent) {
 		try {
 			signedContent.content.close();
 		} catch (IOException e) {
 			// do nothing
 		}
 		this. = signedContent;
 	}
 
 	}
 
 	public synchronized SignedContentEntry[] getSignedEntries() {
 		if ( == null)
 			return null;
 		SignedContentEntry[] results = new SignedContentEntry[entries.length];
 		Map exceptions = getEntryExceptions(true);
 		for (int i = 0; i < entries.lengthi++) {
 			try {
 				entries[i].verify();
 			} catch (Throwable t) {
 				exceptions.put(entries[i].getName(), t);
 			}
 			results[i] = new SignedContentFileEntry(entries[i]);
 		}
 		try {
 			// ensure the content is closed after caching the exceptions
 		} catch (IOException e) {
 			// do nothing
 		}
 		return results;
 	}
 
 	public synchronized SignedContentEntry getSignedEntry(String name) {
 		if (getEntryExceptions(false) == null)
 			getSignedEntries(); // populate the entry exceptions
 		return entry == null ? null : new SignedContentFileEntry(entry);
 	}
 
 	public SignerInfo[] getSignerInfos() {
 	}
 
 	public Date getSigningTime(SignerInfo signerInfo) {
 		return .getSigningTime(signerInfo);
 	}
 
 	public SignerInfo getTSASignerInfo(SignerInfo signerInfo) {
 		return .getTSASignerInfo(signerInfo);
 	}
 
 	public boolean isSigned() {
 	}
 
 	synchronized Map getEntryExceptions(boolean create) {
 		if (create &&  == null)
 			 = new HashMap(5);
 		return ;
 	}
 
 	public class SignedContentFileEntry implements SignedContentEntry {
 		private final SignedContentEntry entry;
 
 			this. = entry;
		}
		public String getName() {
			return .getName();
		}
		public SignerInfo[] getSignerInfos() {
		}
		public boolean isSigned() {
			return .isSigned();
		}
		public void verify() throws IOExceptionInvalidContentException {
			// check the entry exceptions map for the entry name
			Map exceptions = getEntryExceptions(false);
			Throwable t = exceptions == null ? null : (Throwableexceptions.get(.getName());
			if (t == null)
				return;
			if (t instanceof IOException)
				throw (IOExceptiont;
			if (t instanceof InvalidContentException)
			if (t instanceof Error)
				throw (Errort;
			if (t instanceof RuntimeException)
				throw (RuntimeExceptiont;
		}
	}
New to GrepCode? Check out our FAQ X