|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.updater;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.util.*;
import java.util.jar.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
/** This class represents one module update available on the web
*
* @author Ales Kemr
* @version
*/
class ModuleUpdate extends Object {
// Constants
private static final String ATTR_CODENAMEBASE = "codenamebase"; // NOI18N
/** Holds value of property codenamebase. */
private String codenamebase = null;
/** Holds value of sv */
private String specification_version = null;
private boolean pError = false;
private boolean l10n = false;
private boolean fromInstall = false;
/** Creates new ModuleUpdate for downloaded .nbm file */
ModuleUpdate( File nbmFile, boolean fromInstall ) {
this.fromInstall = fromInstall;
createFromDistribution( nbmFile );
}
/** Creates module from downloaded .nbm file */
private void createFromDistribution( File nbmFile ) {
Document document = null;
Node node = null;
Element documentElement = null;
// Try to parse the info file
JarFile jf = null;
InputStream is = null;
try {
jf = new JarFile(nbmFile);
is = jf.getInputStream(jf.getEntry("Info/info.xml")); // NOI18N
InputSource xmlInputSource = new InputSource( is );
document = XMLUtil.parse( xmlInputSource, false, false, new ErrorCatcher(), XMLUtil.createAUResolver() );
documentElement = document.getDocumentElement();
node = documentElement;
if (is != null)
is.close();
}
catch ( org.xml.sax.SAXException e ) {
System.out.println("Bad info : " + nbmFile.getAbsolutePath() ); // NOI18N
e.printStackTrace ();
// XXX now what? object is corrupt, NPE thrown later anyway...
}
catch ( java.io.IOException e ) {
System.out.println("Missing info : " + nbmFile.getAbsolutePath() ); // NOI18N
e.printStackTrace ();
}
finally {
try {
if (is != null)
is.close();
if (jf != null)
jf.close();
} catch ( IOException ioe ) {
ioe.printStackTrace();
}
}
setCodenamebase( getAttribute( node, ATTR_CODENAMEBASE ) );
NodeList nodeList = ((Element)node).getElementsByTagName( "l10n" ); // NOI18N
if ( nodeList.getLength() > 0 ) {
l10n = true;
Node n = nodeList.item( 0 );
setSpecification_version( getAttribute( n, "module_spec_version" ) );
} else {
nodeList = ((Element)node).getElementsByTagName( "manifest" ); // NOI18N
for( int i = 0; i < nodeList.getLength(); i++ ) {
if ( nodeList.item( i ).getNodeType() != Node.ELEMENT_NODE ||
!( nodeList.item( i ) instanceof Element ) ) {
break;
}
// ((Element)nodeList.item( i )).normalize();
NamedNodeMap attrList = nodeList.item( i ).getAttributes();
for( int j = 0; j < attrList.getLength(); j++ ) {
Attr attr = (Attr) attrList.item( j );
if (attr.getName().equals("OpenIDE-Module")) // NOI18N
setCodenamebase(attr.getValue());
else if (attr.getName().equals("OpenIDE-Module-Specification-Version")) // NOI18N
setSpecification_version(attr.getValue());
}
}
}
}
private String getAttribute(Node n, String attribute) {
Node attr = n.getAttributes().getNamedItem( attribute );
return attr == null ? null : attr.getNodeValue();
}
/** Getter for property codeNameBase.
*@return Value of property codeNameBase.
*/
String getCodenamebase() {
return codenamebase;
}
/** Setter for property Codenamebase.
*@param manufacturer New value of property Codenamebase.
*/
void setCodenamebase(String codenamebase) {
this.codenamebase = codenamebase;
}
/** Getter for property specification_version.
*@return Value of property specification_version.
*/
String getSpecification_version() {
return specification_version;
}
/** Setter for property specification_version.
*@param notification New value of property specification_version.
*/
void setSpecification_version(String specification_version) {
this.specification_version = specification_version;
}
/** Getter for property l10n.
* @return Value of property l10n.
*
*/
public boolean isL10n() {
return l10n;
}
/** Getter for property fromInstall.
* @return Value of property fromInstall.
*
*/
public boolean isFromInstall() {
return fromInstall;
}
class ErrorCatcher implements org.xml.sax.ErrorHandler {
private void message (String level, org.xml.sax.SAXParseException e) {
pError = true;
}
public void error (org.xml.sax.SAXParseException e) {
// normally a validity error
pError = true;
}
public void warning (org.xml.sax.SAXParseException e) {
//parseFailed = true;
}
public void fatalError (org.xml.sax.SAXParseException e) {
pError = true;
}
} //end of inner class ErrorPrinter
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.