📄 componentdb.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: ComponentDb.java
package cisco.dsbu.cms.boot.internal;
import cisco.dsbu.cms.boot.internal.ccl.ClassData;
import cisco.dsbu.cms.boot.internal.jobq.JobHandler;
import cisco.dsbu.cms.boot.internal.jobq.JobOwner;
import cisco.dsbu.cms.boot.internal.jobq.JobQueue;
import cisco.dsbu.cms.boot.internal.util.JreVersion;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.*;
// Referenced classes of package cisco.dsbu.cms.boot.internal:
// VersionFile, Distribution, Component, VersionReadHandler,
// VersionIntgHandler, PackageLoadHandler, VersionIntegrator, Package,
// DynamicDiscoveryDb
class ComponentDb
implements JobOwner
{
private static final JreVersion CURR_JRE_VER = new JreVersion(System.getProperty("java.version"));
private Map compMap;
private DynamicDiscoveryDb dynDiscDb;
private List versionFiles;
private boolean parsedFileSeen;
private boolean majorCompatibleFileSeen;
private boolean jreCompatibleFileSeen;
private JreVersion minJre;
private VersionIntegrator integrator;
private JobQueue verReadQ;
private JobQueue verIntgQ;
private JobQueue pkgLoadQ;
ComponentDb(DynamicDiscoveryDb dynamicdiscoverydb, VersionIntegrator versionintegrator)
{
compMap = new HashMap();
versionFiles = new ArrayList(20);
verReadQ = new JobQueue(this, 0);
verIntgQ = new JobQueue(this, 1);
pkgLoadQ = new JobQueue(this, 0);
dynDiscDb = dynamicdiscoverydb;
integrator = versionintegrator;
versionintegrator.setComponentDb(this);
}
void integrateFile(URL url, InputStream inputstream)
{
VersionFile versionfile = new VersionFile(url, inputstream);
verReadQ.submit(versionfile, false);
}
void waitForCompletion()
{
verReadQ.waitForCompletion();
verIntgQ.waitForCompletion();
}
boolean addVersionFile(VersionFile versionfile)
{
versionFiles.add(versionfile);
if(versionfile.getParseException() != null)
return false;
parsedFileSeen = true;
if(versionfile.getMajorVersion() != 1)
return false;
majorCompatibleFileSeen = true;
JreVersion jreversion = versionfile.getJreVersion();
if(minJre == null || jreversion.compareTo(minJre) < 0)
minJre = jreversion;
if(jreversion.compareTo(CURR_JRE_VER) > 0)
{
return false;
} else
{
jreCompatibleFileSeen = true;
return true;
}
}
int getStartupError()
{
if(!parsedFileSeen)
return 1;
if(!majorCompatibleFileSeen)
return 2;
return jreCompatibleFileSeen ? 0 : 3;
}
List getContribDists()
{
ArrayList arraylist = new ArrayList();
for(Iterator iterator = versionFiles.iterator(); iterator.hasNext();)
{
VersionFile versionfile = (VersionFile)iterator.next();
if(versionfile.isContributing())
{
for(Iterator iterator1 = versionfile.getDistributions().iterator(); iterator1.hasNext();)
{
Distribution distribution = (Distribution)iterator1.next();
if(distribution.isContributing())
arraylist.add(distribution.getName());
}
}
}
return arraylist;
}
void integrateWithoutChecking(Package package1)
{
List list = package1.getComponents();
Component component;
for(Iterator iterator = list.iterator(); iterator.hasNext(); replaceComponent(null, component))
{
component = (Component)iterator.next();
String s = component.getName();
compMap.put(s, component);
}
}
void integrateWithChecking(Package package1)
{
List list = package1.getComponents();
for(Iterator iterator = list.iterator(); iterator.hasNext();)
{
Component component = (Component)iterator.next();
String s = component.getName();
Component component1 = (Component)compMap.get(s);
if(component1 == null)
{
compMap.put(s, component);
replaceComponent(null, component);
} else
if(component.isNewerThan(component1))
{
compMap.put(s, component);
replaceComponent(component1, component);
}
}
}
private void replaceComponent(Component component, Component component1)
{
String s = null;
String s1 = null;
if(component != null)
{
component.setLatest(false);
s = component.getMarkedSuper();
}
component1.setLatest(true);
s1 = component1.getMarkedSuper();
if(s != null)
{
if(s.equals(s1))
return;
dynDiscDb.removeDiscovered(s, component.getClassName());
}
if(s1 != null)
dynDiscDb.addDiscovered(s1, component1.getClassName());
}
ClassData getClassData(String s)
{
String s1 = s.replace('.', '/') + ".class";
Component component = (Component)compMap.get(s1);
if(component == null)
return null;
byte abyte0[] = getContents(component);
if(abyte0 == null)
return null;
else
return component;
}
InputStream getStream(String s)
{
Component component = (Component)compMap.get(s);
if(component == null)
return null;
byte abyte0[] = getContents(component);
if(abyte0 == null)
{
return null;
} else
{
ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(abyte0);
return bytearrayinputstream;
}
}
protected boolean contains(String s)
{
return compMap.get(s) != null;
}
private byte[] getContents(Component component)
{
byte abyte2[];
synchronized(component)
{
if(component.isContentsLoaded())
{
byte abyte0[] = component.getContents();
return abyte0;
}
if(component.isContentsNotFound())
{
byte abyte1[] = null;
return abyte1;
}
Package package1 = component.getPackage();
pkgLoadQ.submit(package1, false);
do
try
{
component.wait();
}
catch(InterruptedException interruptedexception) { }
while(!component.isContentsLoaded() && !component.isContentsNotFound());
abyte2 = component.getContents();
}
return abyte2;
}
public JobHandler createHandler(JobQueue jobqueue)
{
Object obj = null;
if(jobqueue == verReadQ)
obj = new VersionReadHandler(verIntgQ);
else
if(jobqueue == verIntgQ)
obj = new VersionIntgHandler(this, integrator);
else
if(jobqueue == pkgLoadQ)
obj = new PackageLoadHandler();
return ((JobHandler) (obj));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -