diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2006-05-29 16:19:43 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2006-05-29 16:19:43 +0000 |
commit | edd2a15cd1b0c0771bde794ca558397414515e7f (patch) | |
tree | 7a03d9df49a3eafa27a831ff321ce65168bfa16b /gnu/java | |
parent | 5418bfcd1dcd18878b4d0910610513c6247632ec (diff) | |
download | classpath-edd2a15cd1b0c0771bde794ca558397414515e7f.tar.gz |
2006-05-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
* Merge of HEAD to generics-branch (2006-05-20 to 2006-05-29)
Diffstat (limited to 'gnu/java')
-rw-r--r-- | gnu/java/awt/BitwiseXORComposite.java | 2 | ||||
-rw-r--r-- | gnu/java/awt/font/opentype/NameDecoder.java | 46 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GdkFontPeer.java | 89 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GdkGraphics.java | 519 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GdkGraphics2D.java | 241 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GdkTextLayout.java | 57 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkCanvasPeer.java | 1 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkComponentPeer.java | 22 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkImage.java | 10 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkToolkit.java | 49 | ||||
-rw-r--r-- | gnu/java/lang/management/OperatingSystemMXBeanImpl.java | 73 | ||||
-rw-r--r-- | gnu/java/lang/management/package.html | 46 | ||||
-rw-r--r-- | gnu/java/net/loader/JarURLLoader.java | 5 |
13 files changed, 296 insertions, 864 deletions
diff --git a/gnu/java/awt/BitwiseXORComposite.java b/gnu/java/awt/BitwiseXORComposite.java index b568e1108..9205df1dd 100644 --- a/gnu/java/awt/BitwiseXORComposite.java +++ b/gnu/java/awt/BitwiseXORComposite.java @@ -59,7 +59,7 @@ import java.awt.image.WritableRaster; * /> * * <p>The above screen shot shows the result of applying six different - * BitwiseXORComposites. They were constructed with the colors colors + * BitwiseXORComposites. They were constructed with the colors * white, blue, black, orange, green, and brown, respectively. Each * composite was used to paint a fully white rectangle on top of the * blue bar in the background. diff --git a/gnu/java/awt/font/opentype/NameDecoder.java b/gnu/java/awt/font/opentype/NameDecoder.java index bc0c0df09..e4ea202bb 100644 --- a/gnu/java/awt/font/opentype/NameDecoder.java +++ b/gnu/java/awt/font/opentype/NameDecoder.java @@ -48,7 +48,7 @@ import java.util.Locale; * * @author Sascha Brawer (brawer@dandelis.ch) */ -class NameDecoder +public class NameDecoder { public static final int NAME_COPYRIGHT = 0; @@ -122,27 +122,38 @@ class NameDecoder nameTable.position(0); /* We understand only format 0 of the name table. */ - if (nameTable.getChar() != 0) + if (nameTable.getShort() != 0) return null; macLanguage = getMacLanguageCode(locale); msLanguage = getMicrosoftLanguageCode(locale); - numRecords = nameTable.getChar(); - offset = nameTable.getChar(); + numRecords = nameTable.getShort(); + offset = nameTable.getShort(); for (int i = 0; i < numRecords; i++) { - namePlatform = nameTable.getChar(); - nameEncoding = nameTable.getChar(); - nameLanguage = nameTable.getChar(); - nameID = nameTable.getChar(); - nameLen = nameTable.getChar(); - nameStart = offset + nameTable.getChar(); + namePlatform = nameTable.getShort(); + nameEncoding = nameTable.getShort(); + nameLanguage = nameTable.getShort(); + nameID = nameTable.getShort(); + nameLen = nameTable.getShort(); + nameStart = offset + nameTable.getShort(); if (nameID != name) continue; + // Handle PS seperately as it can be only ASCII, although + // possibly encoded as UTF-16BE + if ( name == NAME_POSTSCRIPT ) + { + if( nameTable.get(nameStart) == 0 ) // Peek at top byte + result = decodeName("UTF-16BE", nameTable, nameStart, nameLen); + else + result = decodeName("ASCII", nameTable, nameStart, nameLen); + return result; + } + match = false; switch (namePlatform) { @@ -393,14 +404,19 @@ class NameDecoder private static String decodeName(int platform, int encoding, int language, ByteBuffer buffer, int offset, int len) { - byte[] byteBuf; - String charsetName; - int oldPosition; - - charsetName = getCharsetName(platform, language, encoding); + String charsetName = getCharsetName(platform, language, encoding); if (charsetName == null) return null; + return decodeName(charsetName, buffer, offset, len); + } + + private static String decodeName(String charsetName, + ByteBuffer buffer, int offset, int len) + { + byte[] byteBuf; + int oldPosition; + byteBuf = new byte[len]; oldPosition = buffer.position(); try diff --git a/gnu/java/awt/peer/gtk/GdkFontPeer.java b/gnu/java/awt/peer/gtk/GdkFontPeer.java index 82744480d..544efa3c9 100644 --- a/gnu/java/awt/peer/gtk/GdkFontPeer.java +++ b/gnu/java/awt/peer/gtk/GdkFontPeer.java @@ -40,6 +40,7 @@ package gnu.java.awt.peer.gtk; import gnu.classpath.Configuration; import gnu.java.awt.peer.ClasspathFontPeer; +import gnu.java.awt.font.opentype.NameDecoder; import java.awt.Font; import java.awt.FontMetrics; @@ -53,6 +54,7 @@ import java.text.StringCharacterIterator; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; +import java.nio.ByteBuffer; public class GdkFontPeer extends ClasspathFontPeer { @@ -79,17 +81,18 @@ public class GdkFontPeer extends ClasspathFontPeer } } + private ByteBuffer nameTable = null; + private native void initState (); private native void dispose (); - private native void setFont (String family, int style, int size, boolean useGraphics2D); + private native void setFont (String family, int style, int size); native void getFontMetrics(double [] metrics); native void getTextMetrics(String str, double [] metrics); protected void finalize () { - if (GtkToolkit.useGraphics2D ()) - GdkGraphics2D.releasePeerGraphicsResource(this); + GdkGraphics2D.releasePeerGraphicsResource(this); dispose (); } @@ -139,26 +142,84 @@ public class GdkFontPeer extends ClasspathFontPeer { super(name, style, size); initState (); - setFont (this.familyName, this.style, (int)this.size, - GtkToolkit.useGraphics2D()); + setFont (this.familyName, this.style, (int)this.size); } public GdkFontPeer (String name, Map attributes) { super(name, attributes); initState (); - setFont (this.familyName, this.style, (int)this.size, - GtkToolkit.useGraphics2D()); + setFont (this.familyName, this.style, (int)this.size); } - + + /** + * Unneeded, but implemented anyway. + */ public String getSubFamilyName(Font font, Locale locale) { - return null; + String name; + + if (locale == null) + locale = Locale.getDefault(); + + name = getName(NameDecoder.NAME_SUBFAMILY, locale); + if (name == null) + { + name = getName(NameDecoder.NAME_SUBFAMILY, Locale.ENGLISH); + if ("Regular".equals(name)) + name = null; + } + + return name; } + /** + * Returns the bytes belonging to a TrueType/OpenType table, + * Parameters n,a,m,e identify the 4-byte ASCII tag of the table. + * + * Returns null if the font is not TT, the table is nonexistant, + * or if some other unexpected error occured. + * + */ + private native byte[] getTrueTypeTable(byte n, byte a, byte m, byte e); + + /** + * Returns the PostScript name of the font, defaults to the familyName if + * a PS name could not be retrieved. + */ public String getPostScriptName(Font font) { - return this.familyName; + String name = getName(NameDecoder.NAME_POSTSCRIPT, + /* any language */ null); + if( name == null ) + return this.familyName; + + return name; + } + + /** + * Extracts a String from the font’s name table. + * + * @param name the numeric TrueType or OpenType name ID. + * + * @param locale the locale for which names shall be localized, or + * <code>null</code> if the locale does mot matter because the name + * is known to be language-independent (for example, because it is + * the PostScript name). + */ + private String getName(int name, Locale locale) + { + if (nameTable == null) + { + byte[] data = getTrueTypeTable((byte)'n', (byte) 'a', + (byte) 'm', (byte) 'e'); + if( data == null ) + return null; + + nameTable = ByteBuffer.wrap( data ); + } + + return NameDecoder.getName(nameTable, name, locale); } public boolean canDisplay (Font font, char c) @@ -265,7 +326,13 @@ public class GdkFontPeer extends ClasspathFontPeer public int getNumGlyphs (Font font) { - throw new UnsupportedOperationException (); + byte[] data = getTrueTypeTable((byte)'m', (byte) 'a', + (byte)'x', (byte) 'p'); + if( data == null ) + return -1; + + ByteBuffer buf = ByteBuffer.wrap( data ); + return buf.getShort(4); } public Rectangle2D getStringBounds (Font font, CharacterIterator ci, diff --git a/gnu/java/awt/peer/gtk/GdkGraphics.java b/gnu/java/awt/peer/gtk/GdkGraphics.java deleted file mode 100644 index a5b9ff135..000000000 --- a/gnu/java/awt/peer/gtk/GdkGraphics.java +++ /dev/null @@ -1,519 +0,0 @@ -/* GdkGraphics.java - Copyright (C) 1998, 1999, 2002, 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package gnu.java.awt.peer.gtk; - -import gnu.classpath.Configuration; -import gnu.java.awt.AWTUtilities; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.Image; -import java.awt.Rectangle; -import java.awt.Shape; -import java.awt.Toolkit; -import java.awt.image.ImageObserver; -import java.text.AttributedCharacterIterator; - -public class GdkGraphics extends Graphics -{ - static - { - if (Configuration.INIT_LOAD_LIBRARY) - { - System.loadLibrary("gtkpeer"); - } - initStaticState (); - } - - static native void initStaticState(); - private final int native_state = GtkGenericPeer.getUniqueInteger (); - - Color color, xorColor; - GtkComponentPeer component; - Font font = new Font ("Dialog", Font.PLAIN, 12); - Rectangle clip; - GtkImage image; - - int xOffset = 0; - int yOffset = 0; - - static final int GDK_COPY = 0, GDK_XOR = 2; - - native void initState (GtkComponentPeer component); - native void initStateUnlocked (GtkComponentPeer component); - native void initState (int width, int height); - native void initFromImage (GtkImage image); - native void nativeCopyState (GdkGraphics g); - - /** - * A cached instance that is used by {@link #create} in order to avoid - * massive allocation of graphics contexts. - */ - GdkGraphics cached = null; - - /** - * A link to the parent context. This is used in {@link #dispose} to put - * this graphics context into the cache. - */ - GdkGraphics parent = null; - - GdkGraphics (GdkGraphics g) - { - parent = g; - copyState (g); - } - - GdkGraphics (int width, int height) - { - initState (width, height); - color = Color.black; - clip = new Rectangle (0, 0, width, height); - font = new Font ("Dialog", Font.PLAIN, 12); - } - - GdkGraphics (GtkImage image) - { - this.image = image; - initFromImage (image); - color = Color.black; - clip = new Rectangle (0, 0, - image.getWidth(null), image.getHeight(null)); - font = new Font ("Dialog", Font.PLAIN, 12); - } - - GdkGraphics (GtkComponentPeer component) - { - this.component = component; - color = Color.black; - - if (component.isRealized ()) - initComponentGraphics (); - else - connectSignals (component); - } - - void initComponentGraphics () - { - initState (component); - color = component.awtComponent.getForeground (); - if (color == null) - color = Color.BLACK; - Dimension d = component.awtComponent.getSize (); - clip = new Rectangle (0, 0, d.width, d.height); - } - - // called back by native side: realize_cb - void initComponentGraphicsUnlocked () - { - initStateUnlocked (component); - color = component.awtComponent.getForeground (); - if (color == null) - color = Color.BLACK; - Dimension d = component.awtComponent.getSize (); - clip = new Rectangle (0, 0, d.width, d.height); - } - - native void connectSignals (GtkComponentPeer component); - - public native void clearRect(int x, int y, int width, int height); - - public void clipRect (int x, int y, int width, int height) - { - if (component != null && ! component.isRealized ()) - return; - - computeIntersection(x, y, width, height, clip); - setClipRectangle (clip.x, clip.y, clip.width, clip.height); - } - - public native void copyArea(int x, int y, int width, int height, - int dx, int dy); - - /** - * Creates a copy of this GdkGraphics instance. This implementation can - * reuse a cached instance to avoid massive instantiation of Graphics objects - * during painting. - * - * @return a copy of this graphics context - */ - public Graphics create() - { - GdkGraphics copy = cached; - if (copy == null) - copy = new GdkGraphics(this); - else - { - copy.copyState(this); - cached = null; - } - return copy; - } - - public native void nativeDispose(); - - /** - * Disposes this graphics object. This puts this graphics context into the - * cache of its parent graphics if there is one. - */ - public void dispose() - { - if (parent != null) - { - parent.cached = this; - parent = null; - } - else - nativeDispose(); - } - - /** - * This is called when this object gets finalized by the garbage collector. - * In addition to {@link Graphics#finalize()} this calls nativeDispose() to - * make sure the native resources are freed before the graphics context is - * thrown away. - */ - public void finalize() - { - super.finalize(); - nativeDispose(); - } - - public boolean drawImage (Image img, int x, int y, - Color bgcolor, ImageObserver observer) - { - if (img != null) - return drawImage(img, x, y, img.getWidth(null), img.getHeight(null), - bgcolor, observer); - return false; - } - - public boolean drawImage (Image img, int x, int y, ImageObserver observer) - { - return drawImage (img, x, y, null, observer); - } - - public boolean drawImage(Image img, int x, int y, int width, int height, - Color bgcolor, ImageObserver observer) - { - if (img != null) - { - if (img instanceof GtkImage) - return ((GtkImage) img).drawImage(this, x, y, width, height, bgcolor, - observer); - return (new GtkImage(img.getSource())).drawImage(this, x, y, width, - height, bgcolor, - observer); - } - return false; - } - - public boolean drawImage (Image img, int x, int y, int width, int height, - ImageObserver observer) - { - return drawImage (img, x, y, width, height, null, observer); - } - - public boolean drawImage (Image img, int dx1, int dy1, int dx2, int dy2, - int sx1, int sy1, int sx2, int sy2, - Color bgcolor, ImageObserver observer) - { - if (img != null) - { - if (img instanceof GtkImage) - return ((GtkImage) img).drawImage(this, dx1, dy1, dx2, dy2, sx1, sy1, - sx2, sy2, bgcolor, observer); - return (new GtkImage(img.getSource())).drawImage(this, dx1, dy1, dx2, - dy2, sx1, sy1, sx2, - sy2, bgcolor, observer); - } - return false; - } - - public boolean drawImage (Image img, int dx1, int dy1, int dx2, int dy2, - int sx1, int sy1, int sx2, int sy2, - ImageObserver observer) - { - return drawImage (img, dx1, dy1, dx2, dy2, - sx1, sy1, sx2, sy2, - null, observer); - } - - public native void drawLine(int x1, int y1, int x2, int y2); - - public native void drawArc(int x, int y, int width, int height, - int startAngle, int arcAngle); - public native void fillArc(int x, int y, int width, int height, - int startAngle, int arcAngle); - public native void drawOval(int x, int y, int width, int height); - public native void fillOval(int x, int y, int width, int height); - - public native void drawPolygon(int[] xPoints, int[] yPoints, int nPoints); - public native void fillPolygon(int[] xPoints, int[] yPoints, int nPoints); - - public native void drawPolyline(int[] xPoints, int[] yPoints, int nPoints); - - public native void drawRect(int x, int y, int width, int height); - public native void fillRect(int x, int y, int width, int height); - - GdkFontPeer getFontPeer() - { - return (GdkFontPeer) getFont().getPeer(); - } - - native void drawString (GdkFontPeer f, String str, int x, int y); - public void drawString (String str, int x, int y) - { - drawString(getFontPeer(), str, x, y); - } - - public void drawString (AttributedCharacterIterator ci, int x, int y) - { - throw new Error ("not implemented"); - } - - public void drawRoundRect(int x, int y, int width, int height, - int arcWidth, int arcHeight) - { - if (arcWidth > width) - arcWidth = width; - if (arcHeight > height) - arcHeight = height; - - int xx = x + width - arcWidth; - int yy = y + height - arcHeight; - - drawArc (x, y, arcWidth, arcHeight, 90, 90); - drawArc (xx, y, arcWidth, arcHeight, 0, 90); - drawArc (xx, yy, arcWidth, arcHeight, 270, 90); - drawArc (x, yy, arcWidth, arcHeight, 180, 90); - - int y1 = y + arcHeight / 2; - int y2 = y + height - arcHeight / 2; - drawLine (x, y1, x, y2); - drawLine (x + width, y1, x + width, y2); - - int x1 = x + arcWidth / 2; - int x2 = x + width - arcWidth / 2; - drawLine (x1, y, x2, y); - drawLine (x1, y + height, x2, y + height); - } - - public void fillRoundRect (int x, int y, int width, int height, - int arcWidth, int arcHeight) - { - if (arcWidth > width) - arcWidth = width; - if (arcHeight > height) - arcHeight = height; - - int xx = x + width - arcWidth; - int yy = y + height - arcHeight; - - fillArc (x, y, arcWidth, arcHeight, 90, 90); - fillArc (xx, y, arcWidth, arcHeight, 0, 90); - fillArc (xx, yy, arcWidth, arcHeight, 270, 90); - fillArc (x, yy, arcWidth, arcHeight, 180, 90); - - fillRect (x, y + arcHeight / 2, width, height - arcHeight + 1); - fillRect (x + arcWidth / 2, y, width - arcWidth + 1, height); - } - - public Shape getClip () - { - return getClipBounds (); - } - - public Rectangle getClipBounds () - { - if (clip == null) - return null; - else - return clip.getBounds(); - } - - public Color getColor () - { - return color; - } - - public Font getFont () - { - return font; - } - - public FontMetrics getFontMetrics (Font font) - { - // Get the font metrics through GtkToolkit to take advantage of - // the metrics cache. - return Toolkit.getDefaultToolkit().getFontMetrics (font); - } - - native void setClipRectangle (int x, int y, int width, int height); - - public void setClip (int x, int y, int width, int height) - { - if ((component != null && ! component.isRealized ()) - || clip == null) - return; - - clip.x = x; - clip.y = y; - clip.width = width; - clip.height = height; - - setClipRectangle (x, y, width, height); - } - - public void setClip (Rectangle clip) - { - setClip (clip.x, clip.y, clip.width, clip.height); - } - - public void setClip (Shape clip) - { - if (clip == null) - { - // Reset clipping. - Dimension d = component.awtComponent.getSize(); - setClip(new Rectangle (0, 0, d.width, d.height)); - } - else - setClip(clip.getBounds()); - } - - private native void setFGColor(int red, int green, int blue); - - public void setColor (Color c) - { - if (c == null) - color = Color.BLACK; - else - color = c; - - if (xorColor == null) /* paint mode */ - setFGColor (color.getRed (), color.getGreen (), color.getBlue ()); - else /* xor mode */ - setFGColor (color.getRed () ^ xorColor.getRed (), - color.getGreen () ^ xorColor.getGreen (), - color.getBlue () ^ xorColor.getBlue ()); - } - - public void setFont (Font font) - { - if (font != null) - this.font = font; - } - - native void setFunction (int gdk_func); - - public void setPaintMode () - { - xorColor = null; - - setFunction (GDK_COPY); - setFGColor (color.getRed (), color.getGreen (), color.getBlue ()); - } - - public void setXORMode (Color c) - { - xorColor = c; - - setFunction (GDK_XOR); - setFGColor (color.getRed () ^ xorColor.getRed (), - color.getGreen () ^ xorColor.getGreen (), - color.getBlue () ^ xorColor.getBlue ()); - } - - public native void translateNative(int x, int y); - - public void translate (int x, int y) - { - if (component != null && ! component.isRealized ()) - return; - - clip.x -= x; - clip.y -= y; - - translateNative (x, y); - } - - /** - * Copies over the state of another GdkGraphics to this instance. This is - * used by the {@link #GdkGraphics(GdkGraphics)} constructor and the - * {@link #create()} method. - * - * @param g the GdkGraphics object to copy the state from - */ - private void copyState(GdkGraphics g) - { - color = g.color; - xorColor = g.xorColor; - font = g.font; - if (font == null) - font = new Font ("Dialog", Font.PLAIN, 12); - clip = new Rectangle (g.clip); - component = g.component; - nativeCopyState(g); - } - - private Rectangle computeIntersection(int x, int y, int w, int h, - Rectangle rect) - { - int x2 = (int) rect.x; - int y2 = (int) rect.y; - int w2 = (int) rect.width; - int h2 = (int) rect.height; - - int dx = (x > x2) ? x : x2; - int dy = (y > y2) ? y : y2; - int dw = (x + w < x2 + w2) ? (x + w - dx) : (x2 + w2 - dx); - int dh = (y + h < y2 + h2) ? (y + h - dy) : (y2 + h2 - dy); - - if (dw >= 0 && dh >= 0) - rect.setBounds(dx, dy, dw, dh); - else - rect.setBounds(0, 0, 0, 0); - - return rect; - } - -} diff --git a/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/gnu/java/awt/peer/gtk/GdkGraphics2D.java index 323d5614a..ff3555015 100644 --- a/gnu/java/awt/peer/gtk/GdkGraphics2D.java +++ b/gnu/java/awt/peer/gtk/GdkGraphics2D.java @@ -100,10 +100,6 @@ public class GdkGraphics2D extends Graphics2D static { - if (! Configuration.GTK_CAIRO_ENABLED) - throw new Error("Graphics2D not implemented. " - + "Cairo was not found or disabled at configure time"); - if (Configuration.INIT_LOAD_LIBRARY) System.loadLibrary("gtkpeer"); @@ -132,15 +128,12 @@ public class GdkGraphics2D extends Graphics2D Composite comp; private Stack stateStack; - private native void initStateUnlocked(GtkComponentPeer component); private native void initState(GtkComponentPeer component); private native void initState(int width, int height); private native void initState(int[] pixes, int width, int height); private native void copyState(GdkGraphics2D g); public native void dispose(); private native void cairoSurfaceSetFilter(int filter); - private native void cairoSurfaceSetFilterUnlocked(int filter); - native void connectSignals(GtkComponentPeer component); public void finalize() { @@ -157,28 +150,19 @@ public class GdkGraphics2D extends Graphics2D return new GdkGraphics2D(this, x, y, width, height); } - private void fail_g2d () - { - System.err.println ("Attempted to instantiate GdkGraphics2D" - + " but Graphics2D not enabled. Try again with" - + " -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D"); - System.exit (1); - } - GdkGraphics2D(GdkGraphics2D g) { - if (!GtkToolkit.useGraphics2D ()) - fail_g2d (); - + Color foreground; + paint = g.paint; stroke = g.stroke; setRenderingHints(g.hints); if (g.fg.getAlpha() != -1) - fg = new Color(g.fg.getRed(), g.fg.getGreen(), g.fg.getBlue(), + foreground = new Color(g.fg.getRed(), g.fg.getGreen(), g.fg.getBlue(), g.fg.getAlpha()); else - fg = new Color(g.fg.getRGB()); + foreground = new Color(g.fg.getRGB()); if (g.bg != null) { @@ -203,7 +187,7 @@ public class GdkGraphics2D extends Graphics2D component = g.component; copyState(g); - setColor(fg); + setColor(foreground); setBackground(bg); setPaint(paint); setStroke(stroke); @@ -221,9 +205,6 @@ public class GdkGraphics2D extends Graphics2D GdkGraphics2D(int width, int height) { - if (!GtkToolkit.useGraphics2D ()) - fail_g2d (); - initState(width, height); setColor(Color.black); @@ -239,15 +220,9 @@ public class GdkGraphics2D extends Graphics2D GdkGraphics2D(GtkComponentPeer component) { - if (!GtkToolkit.useGraphics2D ()) - fail_g2d (); - this.component = component; - if (component.isRealized()) - initComponentGraphics2D(); - else - connectSignals(component); + initComponentGraphics2D(); } void initComponentGraphics2D() @@ -265,21 +240,6 @@ public class GdkGraphics2D extends Graphics2D stateStack = new Stack(); } - void initComponentGraphics2DUnlocked() - { - initStateUnlocked(component); - - setColorUnlocked(component.awtComponent.getForeground()); - setBackgroundUnlocked(component.awtComponent.getBackground()); - setPaintUnlocked(getColorUnlocked()); - setTransformUnlocked(new AffineTransform()); - setStrokeUnlocked(new BasicStroke()); - setRenderingHintsUnlocked(getDefaultHints()); - setFontUnlocked(new Font("SansSerif", Font.PLAIN, 12)); - - stateStack = new Stack(); - } - GdkGraphics2D(BufferedImage bimage) { this.bimage = bimage; @@ -324,37 +284,25 @@ public class GdkGraphics2D extends Graphics2D // drawing utility methods private native void drawPixels(int[] pixels, int w, int h, int stride, double[] i2u); - private native void setTexturePixelsUnlocked(int[] pixels, int w, int h, int stride); private native void setTexturePixels(int[] pixels, int w, int h, int stride); private native void setGradient(double x1, double y1, double x2, double y2, int r1, int g1, int b1, int a1, int r2, int g2, int b2, int a2, boolean cyclic); - private native void setGradientUnlocked(double x1, double y1, double x2, double y2, - int r1, int g1, int b1, int a1, int r2, - int g2, int b2, int a2, boolean cyclic); - + // simple passthroughs to cairo private native void cairoSave(); private native void cairoRestore(); private native void cairoSetMatrix(double[] m); - private native void cairoSetMatrixUnlocked(double[] m); private native void cairoSetOperator(int cairoOperator); private native void cairoSetRGBAColor(double red, double green, double blue, double alpha); - private native void cairoSetRGBAColorUnlocked(double red, double green, - double blue, double alpha); private native void cairoSetFillRule(int cairoFillRule); private native void cairoSetLineWidth(double width); - private native void cairoSetLineWidthUnlocked(double width); private native void cairoSetLineCap(int cairoLineCap); - private native void cairoSetLineCapUnlocked(int cairoLineCap); private native void cairoSetLineJoin(int cairoLineJoin); - private native void cairoSetLineJoinUnlocked(int cairoLineJoin); private native void cairoSetDash(double[] dashes, int ndash, double offset); - private native void cairoSetDashUnlocked(double[] dashes, int ndash, double offset); private native void cairoSetMiterLimit(double limit); - private native void cairoSetMiterLimitUnlocked(double limit); private native void cairoNewPath(); private native void cairoMoveTo(double x, double y); private native void cairoLineTo(double x, double y); @@ -745,49 +693,6 @@ public class GdkGraphics2D extends Graphics2D throw new java.lang.UnsupportedOperationException(); } - public void setPaintUnlocked(Paint p) - { - if (paint == null) - return; - - paint = p; - if (paint instanceof Color) - { - setColorUnlocked((Color) paint); - } - else if (paint instanceof TexturePaint) - { - TexturePaint tp = (TexturePaint) paint; - BufferedImage img = tp.getImage(); - - // map the image to the anchor rectangle - int width = (int) tp.getAnchorRect().getWidth(); - int height = (int) tp.getAnchorRect().getHeight(); - - double scaleX = width / (double) img.getWidth(); - double scaleY = width / (double) img.getHeight(); - - AffineTransform at = new AffineTransform(scaleX, 0, 0, scaleY, 0, 0); - AffineTransformOp op = new AffineTransformOp(at, getRenderingHints()); - BufferedImage texture = op.filter(img, null); - int[] pixels = texture.getRGB(0, 0, width, height, null, 0, width); - setTexturePixelsUnlocked(pixels, width, height, width); - } - else if (paint instanceof GradientPaint) - { - GradientPaint gp = (GradientPaint) paint; - Point2D p1 = gp.getPoint1(); - Point2D p2 = gp.getPoint2(); - Color c1 = gp.getColor1(); - Color c2 = gp.getColor2(); - setGradientUnlocked(p1.getX(), p1.getY(), p2.getX(), p2.getY(), c1.getRed(), - c1.getGreen(), c1.getBlue(), c1.getAlpha(), c2.getRed(), - c2.getGreen(), c2.getBlue(), c2.getAlpha(), gp.isCyclic()); - } - else - throw new java.lang.UnsupportedOperationException(); - } - public void setTransform(AffineTransform tx) { transform = tx; @@ -799,17 +704,6 @@ public class GdkGraphics2D extends Graphics2D } } - public void setTransformUnlocked(AffineTransform tx) - { - transform = tx; - if (transform != null) - { - double[] m = new double[6]; - transform.getMatrix(m); - cairoSetMatrixUnlocked(m); - } - } - public void transform(AffineTransform tx) { if (transform == null) @@ -854,10 +748,35 @@ public class GdkGraphics2D extends Graphics2D { transform(AffineTransform.getScaleInstance(sx, sy)); } - + + /** + * Translate the system of the co-ordinates. As translation is a frequent + * operation, it is done in an optimised way, unlike scaling and rotating. + */ public void translate(double tx, double ty) { - transform(AffineTransform.getTranslateInstance(tx, ty)); + // 200 -> 140 + if (transform != null) + transform.translate(tx, ty); + else + transform = AffineTransform.getTranslateInstance(tx, ty); + + if (clip != null) + { + // FIXME: this should actuall try to transform the shape + // rather than degrade to bounds. + Rectangle2D r; + + if (clip instanceof Rectangle2D) + r = (Rectangle2D) clip; + else + r = clip.getBounds2D(); + + r.setRect(r.getX() - tx, r.getY() - ty, r.getWidth(), r.getHeight()); + clip = r; + } + + setTransform(transform); } public void translate(int x, int y) @@ -899,48 +818,27 @@ public class GdkGraphics2D extends Graphics2D } } - public void setStrokeUnlocked(Stroke st) - { - stroke = st; - if (stroke instanceof BasicStroke) - { - BasicStroke bs = (BasicStroke) stroke; - cairoSetLineCapUnlocked(bs.getEndCap()); - cairoSetLineWidthUnlocked(bs.getLineWidth()); - cairoSetLineJoinUnlocked(bs.getLineJoin()); - cairoSetMiterLimitUnlocked(bs.getMiterLimit()); - float[] dashes = bs.getDashArray(); - if (dashes != null) - { - double[] double_dashes = new double[dashes.length]; - for (int i = 0; i < dashes.length; i++) - double_dashes[i] = dashes[i]; - cairoSetDashUnlocked(double_dashes, double_dashes.length, - (double) bs.getDashPhase()); - } - else - cairoSetDashUnlocked(new double[0], 0, 0.0); - } - } - //////////////////////////////////////////////// ////// Implementation of Graphics Methods ////// //////////////////////////////////////////////// public void setPaintMode() { - setComposite(java.awt.AlphaComposite.SrcOver); + setComposite(AlphaComposite.SrcOver); } public void setXORMode(Color c) { - setComposite(new gnu.java.awt.BitwiseXORComposite(c)); + // FIXME: implement } public void setColor(Color c) { if (c == null) c = Color.BLACK; + + if (c.equals(fg)) + return; fg = c; paint = c; @@ -948,27 +846,11 @@ public class GdkGraphics2D extends Graphics2D fg.getBlue() / 255.0, fg.getAlpha() / 255.0); } - public void setColorUnlocked(Color c) - { - if (c == null) - c = Color.BLACK; - - fg = c; - paint = c; - cairoSetRGBAColorUnlocked(fg.getRed() / 255.0, fg.getGreen() / 255.0, - fg.getBlue() / 255.0, fg.getAlpha() / 255.0); - } - public Color getColor() { return fg; } - public Color getColorUnlocked() - { - return getColor(); - } - public void clipRect(int x, int y, int width, int height) { clip(new Rectangle(x, y, width, height)); @@ -1096,11 +978,6 @@ public class GdkGraphics2D extends Graphics2D bg = c; } - public void setBackgroundUnlocked(Color c) - { - setBackground(c); - } - public Color getBackground() { return bg; @@ -1290,7 +1167,10 @@ public class GdkGraphics2D extends Graphics2D (int) (a.getAlpha() * ((float) c.getAlpha())))); } else - throw new java.lang.UnsupportedOperationException(); + { + // FIXME: implement general Composite support + throw new java.lang.UnsupportedOperationException(); + } } public void setRenderingHint(RenderingHints.Key hintKey, Object hintValue) @@ -1355,36 +1235,6 @@ public class GdkGraphics2D extends Graphics2D || hints.containsValue(RenderingHints.VALUE_STROKE_DEFAULT); } - public void setRenderingHintsUnlocked(Map hints) - { - this.hints = new RenderingHints(getDefaultHints()); - this.hints.add(new RenderingHints(hints)); - - if (hints.containsKey(RenderingHints.KEY_INTERPOLATION)) - { - if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR)) - cairoSurfaceSetFilterUnlocked(0); - - else if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR)) - cairoSurfaceSetFilterUnlocked(1); - } - - if (hints.containsKey(RenderingHints.KEY_ALPHA_INTERPOLATION)) - { - if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED)) - cairoSurfaceSetFilterUnlocked(2); - - else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY)) - cairoSurfaceSetFilterUnlocked(3); - - else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT)) - cairoSurfaceSetFilterUnlocked(4); - } - - shiftDrawCalls = hints.containsValue(RenderingHints.VALUE_STROKE_NORMALIZE) - || hints.containsValue(RenderingHints.VALUE_STROKE_DEFAULT); - } - public void addRenderingHints(Map hints) { this.hints.add(new RenderingHints(hints)); @@ -1657,11 +1507,6 @@ public class GdkGraphics2D extends Graphics2D .getFont(f.getName(), f.getAttributes()); } - public void setFontUnlocked(Font f) - { - setFont (f); - } - public String toString() { return (getClass().getName() diff --git a/gnu/java/awt/peer/gtk/GdkTextLayout.java b/gnu/java/awt/peer/gtk/GdkTextLayout.java index c3ae581b1..9189bd4b7 100644 --- a/gnu/java/awt/peer/gtk/GdkTextLayout.java +++ b/gnu/java/awt/peer/gtk/GdkTextLayout.java @@ -201,60 +201,9 @@ public class GdkTextLayout public void draw (Graphics2D g2, float x, float y) { - if (g2 instanceof GdkGraphics2D) - { - // we share pango structures directly with GdkGraphics2D - // when legal - GdkGraphics2D gg2 = (GdkGraphics2D) g2; - gg2.drawGdkTextLayout(this, x, y); - } - else - { - // falling back to a rather tedious layout algorithm when - // not legal - AttributedCharacterIterator ci = attributedString.getIterator (); - CharacterIteratorProxy proxy = new CharacterIteratorProxy (ci); - Font defFont = g2.getFont (); - - /* Note: this implementation currently only interprets FONT text - * attributes. There is a reasonable argument to be made for some - * attributes being interpreted out here, where we have control of the - * Graphics2D and can construct or derive new fonts, and some - * attributes being interpreted by the GlyphVector itself. So far, for - * all attributes except FONT we do neither. - */ - - for (char c = ci.first (); - c != CharacterIterator.DONE; - c = ci.next ()) - { - proxy.begin = ci.getIndex (); - proxy.limit = ci.getRunLimit(TextAttribute.FONT); - if (proxy.limit <= proxy.begin) - continue; - - proxy.index = proxy.begin; - - Object fnt = ci.getAttribute(TextAttribute.FONT); - GlyphVector gv; - if (fnt instanceof Font) - gv = ((Font)fnt).createGlyphVector (fontRenderContext, proxy); - else - gv = defFont.createGlyphVector (fontRenderContext, proxy); - - g2.drawGlyphVector (gv, x, y); - - int n = gv.getNumGlyphs (); - for (int i = 0; i < n; ++i) - { - GlyphMetrics gm = gv.getGlyphMetrics (i); - if (gm.getAdvanceX() == gm.getAdvance ()) - x += gm.getAdvanceX (); - else - y += gm.getAdvanceY (); - } - } - } + // we share pango structures directly with GdkGraphics2D + GdkGraphics2D gg2 = (GdkGraphics2D) g2; + gg2.drawGdkTextLayout(this, x, y); } public TextHitInfo getStrongCaret (TextHitInfo hit1, diff --git a/gnu/java/awt/peer/gtk/GtkCanvasPeer.java b/gnu/java/awt/peer/gtk/GtkCanvasPeer.java index 797d653d2..edfc9ceee 100644 --- a/gnu/java/awt/peer/gtk/GtkCanvasPeer.java +++ b/gnu/java/awt/peer/gtk/GtkCanvasPeer.java @@ -45,7 +45,6 @@ import java.awt.peer.CanvasPeer; public class GtkCanvasPeer extends GtkComponentPeer implements CanvasPeer { native void create (); - native void realize (); public GtkCanvasPeer (Canvas c) { diff --git a/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 1a85de5fe..3e464ab1a 100644 --- a/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -109,14 +109,7 @@ public class GtkComponentPeer extends GtkGenericPeer native void gtkWidgetRequestFocus (); native void gtkWidgetDispatchKeyEvent (int id, long when, int mods, int keyCode, int keyLocation); - - native boolean isRealized (); - - void realize () - { - // Default implementation does nothing - } - + native void realize(); native void setNativeEventMask (); void create () @@ -149,6 +142,9 @@ public class GtkComponentPeer extends GtkGenericPeer setNativeEventMask (); + // This peer is guaranteed to have an X window upon construction. + // That is, native methods such as those in GdkGraphics can rely + // on this component's widget->window field being non-null. realize (); if (awtComponent.isCursorSet()) @@ -212,10 +208,7 @@ public class GtkComponentPeer extends GtkGenericPeer public Image createImage (int width, int height) { Image image; - if (GtkToolkit.useGraphics2D ()) - image = new BufferedImage (width, height, BufferedImage.TYPE_INT_RGB); - else - image = new GtkImage (width, height); + image = new BufferedImage (width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(getBackground()); @@ -247,10 +240,7 @@ public class GtkComponentPeer extends GtkGenericPeer // never return null. public Graphics getGraphics () { - if (GtkToolkit.useGraphics2D ()) - return new GdkGraphics2D (this); - else - return new GdkGraphics (this); + return new GdkGraphics2D (this); } public Point getLocationOnScreen () diff --git a/gnu/java/awt/peer/gtk/GtkImage.java b/gnu/java/awt/peer/gtk/GtkImage.java index 5e5f1de01..83ce2cbef 100644 --- a/gnu/java/awt/peer/gtk/GtkImage.java +++ b/gnu/java/awt/peer/gtk/GtkImage.java @@ -168,7 +168,7 @@ public class GtkImage extends Image * Should be called with the GdkPixbufDecoder.pixbufLock held. * Also acquires global gdk lock for drawing. */ - private native void drawPixelsScaled (GdkGraphics gc, + private native void drawPixelsScaled (GdkGraphics2D gc, int bg_red, int bg_green, int bg_blue, int x, int y, int width, int height, boolean composite); @@ -178,7 +178,7 @@ public class GtkImage extends Image * Should be called with the GdkPixbufDecoder.pixbufLock held. * Also acquires global gdk lock for drawing. */ - private native void drawPixelsScaledFlipped (GdkGraphics gc, + private native void drawPixelsScaledFlipped (GdkGraphics2D gc, int bg_red, int bg_green, int bg_blue, boolean flipX, boolean flipY, @@ -466,7 +466,7 @@ public class GtkImage extends Image if (!isLoaded) return null; if (offScreen) - return new GdkGraphics(this); + return null; // FIXME: (Graphics) new GdkGraphics(this); else throw new IllegalAccessError("This method only works for off-screen" +" Images."); @@ -540,7 +540,7 @@ public class GtkImage extends Image /** * Draws an image with eventual scaling/transforming. */ - public boolean drawImage (GdkGraphics g, int dx1, int dy1, int dx2, int dy2, + public boolean drawImage (GdkGraphics2D g, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) { @@ -613,7 +613,7 @@ public class GtkImage extends Image * Draws an image to the GdkGraphics context, at (x,y) scaled to * width and height, with optional compositing with a background color. */ - public boolean drawImage (GdkGraphics g, int x, int y, int width, int height, + public boolean drawImage (GdkGraphics2D g, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) { if (addObserver(observer)) diff --git a/gnu/java/awt/peer/gtk/GtkToolkit.java b/gnu/java/awt/peer/gtk/GtkToolkit.java index 7757db0c5..8e342cb92 100644 --- a/gnu/java/awt/peer/gtk/GtkToolkit.java +++ b/gnu/java/awt/peer/gtk/GtkToolkit.java @@ -78,31 +78,12 @@ import javax.imageio.spi.IIORegistry; this class. If getPeer() ever goes away, we can implement a hash table that will keep up with every window's peer, but for now this is faster. */ -/** - * This class accesses a system property called - * <tt>gnu.java.awt.peer.gtk.Graphics</tt>. If the property is defined and - * equal to "Graphics2D", the cairo-based GdkGraphics2D will be used in - * drawing contexts. Any other value will cause the older GdkGraphics - * object to be used. - */ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit { Hashtable containers = new Hashtable(); static EventQueue q; - static boolean useGraphics2dSet; - static boolean useGraphics2d; static Thread mainThread; - public static boolean useGraphics2D() - { - if (useGraphics2dSet) - return useGraphics2d; - useGraphics2d = System.getProperty("gnu.java.awt.peer.gtk.Graphics", - "Graphics").equals("Graphics2D"); - useGraphics2dSet = true; - return useGraphics2d; - } - static native void gtkInit(int portableNativeSync); static @@ -179,10 +160,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit Image image; try { - if (useGraphics2D()) - image = GdkPixbufDecoder.createBufferedImage(filename); - else - image = new GtkImage(filename); + image = GdkPixbufDecoder.createBufferedImage(filename); } catch (IllegalArgumentException iae) { @@ -196,11 +174,8 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit Image image; try { - if (useGraphics2D()) - image = GdkPixbufDecoder.createBufferedImage(url); - else - image = new GtkImage(url); - } + image = GdkPixbufDecoder.createBufferedImage(url); + } catch (IllegalArgumentException iae) { image = null; @@ -213,10 +188,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit Image image; try { - if (useGraphics2D()) - image = GdkPixbufDecoder.createBufferedImage(producer); - else - image = new GtkImage(producer); + image = GdkPixbufDecoder.createBufferedImage(producer); } catch (IllegalArgumentException iae) { @@ -231,16 +203,9 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit Image image; try { - if (useGraphics2D()) - image = GdkPixbufDecoder.createBufferedImage(imagedata, - imageoffset, - imagelength); - else - { - byte[] datacopy = new byte[imagelength]; - System.arraycopy(imagedata, imageoffset, datacopy, 0, imagelength); - return new GtkImage(datacopy); - } + image = GdkPixbufDecoder.createBufferedImage(imagedata, + imageoffset, + imagelength); } catch (IllegalArgumentException iae) { diff --git a/gnu/java/lang/management/OperatingSystemMXBeanImpl.java b/gnu/java/lang/management/OperatingSystemMXBeanImpl.java new file mode 100644 index 000000000..3ba059b36 --- /dev/null +++ b/gnu/java/lang/management/OperatingSystemMXBeanImpl.java @@ -0,0 +1,73 @@ +/* OperatingSystemMXBeanImpl.java - Implementation of an operating system bean + Copyright (C) 2006 Free Software Foundation + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package gnu.java.lang.management; + +import java.lang.management.OperatingSystemMXBean; + +/** + * Provides access to information about the underlying operating + * system. + * + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) + * @since 1.5 + */ +public final class OperatingSystemMXBeanImpl + implements OperatingSystemMXBean +{ + + public String getArch() + { + return System.getProperty("os.arch"); + } + + public int getAvailableProcessors() + { + return Runtime.getRuntime().availableProcessors(); + } + + public String getName() + { + return System.getProperty("os.name"); + } + + public String getVersion() + { + return System.getProperty("os.version"); + } + +} diff --git a/gnu/java/lang/management/package.html b/gnu/java/lang/management/package.html new file mode 100644 index 000000000..fc1bafc0c --- /dev/null +++ b/gnu/java/lang/management/package.html @@ -0,0 +1,46 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<!-- package.html - describes classes in gnu.java.lang.management package. + Copyright (C) 2006 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. --> + +<html> +<head><title>GNU Classpath - gnu.java.lang.management</title></head> + +<body> +<p>GNU implementations of the Java system management beans.</p> + +</body> +</html> diff --git a/gnu/java/net/loader/JarURLLoader.java b/gnu/java/net/loader/JarURLLoader.java index 130c6fc95..1e6b6bdaa 100644 --- a/gnu/java/net/loader/JarURLLoader.java +++ b/gnu/java/net/loader/JarURLLoader.java @@ -11,6 +11,7 @@ import java.net.URLStreamHandlerFactory; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.Map; import java.util.Set; import java.util.StringTokenizer; import java.util.jar.Attributes; @@ -100,7 +101,7 @@ public final class JarURLLoader extends URLLoader Iterator it = indexMap.entrySet().iterator(); while (it.hasNext()) { - LinkedHashMap.Entry entry = (LinkedHashMap.Entry) it.next(); + Map.Entry entry = (Map.Entry) it.next(); URL subURL = (URL) entry.getKey(); Set prefixes = (Set) entry.getValue(); if (subURL.equals(baseURL)) @@ -206,4 +207,4 @@ public final class JarURLLoader extends URLLoader { return classPath; } -}
\ No newline at end of file +} |