Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.mod;
 
 import java.util.List;
 import java.util.Map;
 
 
 
 public class Bundle extends ClassLoader {
 	protected List<StringlibraryNames = new ArrayList<String>();
 	protected List<LibLoaderlibloaders = new ArrayList<LibLoader>();
 	
 	public Bundle(ClassLoader parent) {
 		super(parent);
 	}	
 	
 	public void addLibrary(String pckString nameString aliasthrows IOException {
 		// TODO - if parent is Bundle and if parent has this library, skip this step
 		
 		// TODO add support for package (pck)
 		
 		this..add(name);
 		
 		String path = ..getLibraryPath(namealias);
 		
 		if (path != null) {
 			LibLoader lib = null;
 			
 			if (path.endsWith(".jar")) 
 				lib = new JarLibLoader(path);
 			else 
 				lib = new FolderLibLoader(path);
 			
 			this..add(lib);
 		}
 		else {
 			// TODO get the library from a bus service
 		}			
 	}
 
 	public Object getInstance(String cname) {
 		try {
 			return this.getClass(cname).newInstance();
 		} 
 		catch (Exception x) {
 			//System.out.println("err: " + x);
 		}
 		
 		return null;
 	}
 	
 	public FuncResult<XElementgetResourceAsXml(String nameboolean keepwhitespace) {
 		try {
 			InputStream is = this.getResourceAsStream(name);
 			
 			if (is == null) {
 				res.errorTr(133, name);		
 				return res;
 			}
 			
 			return XmlReader.parse(iskeepwhitespace); 
 		} 
 		catch (Exception x) {
 			res.errorTr(134, namex);	
 			return res;
 		}
 	}
 
 	public Class<?> getClass(String cname) {
		try {
			return Class.forName(cnametruethis);
		catch (Exception x) {
		}
		return null;
	}
	public byte[] findClassEntry(String name) {
		return this.findFileEntry("/" + name.replace(".""/") + ".class");
	}
		packname = "/" + packname.replace(".""/");
		for (int i = this..size() - 1; i >= 0; i--) {
			LibLoader lib = this..get(i);
			for (Entry<Stringbyte[]> pentry : lib.entries.entrySet()) {
				String name = pentry.getKey();
				if (name.startsWith(packname) && name.endsWith(".class"))
					files.put(namenew BundleFile(namepentry.getValue()));
			}
		}	
		// TODO list parent too if parent is a Bundle
		return files.values();
	}
	public byte[] findFileEntry(String name) {
		for (LibLoader lib : this.) {
			byte[] cd = lib.getEntry(name);
			if (cd != null)
				return cd;
		}		
		ClassLoader p = this.getParent();
		if (p instanceof Bundle)
			return ((Bundle)p).findFileEntry(name);
		return null;
	}
	public boolean hasFileEntry(String fpath) {
		for (LibLoader lib : this.
			if (lib.hasEntry(fpath))
				return true;
		ClassLoader p = this.getParent();
		if (p instanceof Bundle)
			return ((Bundle)p).hasFileEntry(fpath);
		return false;
	}
	protected Class<?> findClass(String namethrows ClassNotFoundException {
		byte[] cd = this.findClassEntry(name);
		if (cd != null
			return super.defineClass(namecd, 0, cd.length);
		return super.findClass(name);
	}
		byte[] entry = this.findFileEntry(name);
		if (entry == null)
			return null;
		return new ByteArrayInputStream(entry);
	}
	public void adler(Adler32 ad) {
		for (LibLoader lib : this.
			lib.adler(ad);
	}
New to GrepCode? Check out our FAQ X