aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/beans/Beans.java
diff options
context:
space:
mode:
authorTom Tromey <tromey@gcc.gnu.org>2000-05-19 17:55:34 +0000
committerTom Tromey <tromey@gcc.gnu.org>2000-05-19 17:55:34 +0000
commit6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef (patch)
tree88cf0d32aea197ea8e8198e1206b04c820308615 /libjava/java/beans/Beans.java
parent021c89ed68c151c45021fccf1bb5338ee817314c (diff)
downloadgcc-6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef.zip
gcc-6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef.tar.gz
gcc-6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef.tar.bz2
Jumbo patch:
* Imported beans and serialization * Updated IA-64 port * Miscellaneous bug fixes From-SVN: r34028
Diffstat (limited to 'libjava/java/beans/Beans.java')
-rw-r--r--libjava/java/beans/Beans.java199
1 files changed, 199 insertions, 0 deletions
diff --git a/libjava/java/beans/Beans.java b/libjava/java/beans/Beans.java
new file mode 100644
index 0000000..08e5623
--- /dev/null
+++ b/libjava/java/beans/Beans.java
@@ -0,0 +1,199 @@
+/* java.beans.Beans
+ Copyright (C) 1998, 1999 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
+package java.beans;
+
+import java.io.*;
+// import java.applet.*;
+import gnu.java.io.*;
+
+/**
+ * <code>Beans</code> provides some helper methods that allow the basic operations of Bean-ness.
+ *
+ * @author John Keiser
+ * @since JDK1.1
+ * @version 1.1.0, 29 Jul 1998
+ *
+ */
+public class Beans {
+ static boolean designTime = false;
+ static boolean guiAvailable = true;
+
+
+ /**
+ * Once again, we have a java.beans class with only
+ * static methods that can be instantiated. When
+ * will the madness end? :)
+ */
+ public Beans() {
+ }
+
+ /**
+ * Allows you to instantiate a Bean. This method takes
+ * a ClassLoader from which to read the Bean and the
+ * name of the Bean.<P>
+ *
+ * The Bean name should be a dotted name, like a class.
+ * It can represent several things. Beans will search
+ * for the Bean using the name like this:<P>
+ * <OL>
+ * <LI>Searches for a serialized instance of the Bean
+ * using getResource(), mangling the Bean name by
+ * replacing the dots with slashes and appending .ser
+ * (for example, gnu.beans.BlahDeBlah would cause
+ * Beans to search for gnu/beans/BlahDeBlah.ser using
+ * getResource()).</LI>
+ * <LI>Searches for the Bean class using the beanName,
+ * and then instantiates it with the no-arg constructor.
+ * At that point, if it is an Applet, it provides it
+ * with AppletContext and AppletStub, and then calls
+ * init().</LI>
+ * </OL>
+ * @param cl the ClassLoader to use, or <CODE>null</CODE>
+ * to use the default ClassLoader.
+ * @param beanName the name of the Bean.
+ * @return the Bean.
+ * @XXX
+ */
+ public static Object instantiate(ClassLoader cl, String beanName) throws IOException, ClassNotFoundException {
+ Object bean;
+
+ InputStream serStream;
+ if(cl == null) {
+ serStream = ClassLoader.getSystemResourceAsStream(beanName.replace('.','/')+".ser");
+ } else {
+ serStream = cl.getResourceAsStream(beanName.replace('.','/')+".ser");
+ }
+ if(serStream != null) {
+ if(cl == null) {
+ ObjectInputStream ois = new ObjectInputStream(serStream);
+ bean = ois.readObject();
+ } else {
+ ClassLoaderObjectInputStream ois = new ClassLoaderObjectInputStream(serStream, cl);
+ bean = ois.readObject();
+ }
+ } else if(cl == null) {
+ Class beanClass = Class.forName(beanName);
+ try {
+ bean = beanClass.newInstance();
+ } catch(IllegalAccessException E) {
+ bean = null;
+ } catch(InstantiationException E) {
+ bean = null;
+ }
+ } else {
+ Class beanClass = cl.loadClass(beanName);
+ try {
+ bean = beanClass.newInstance();
+ } catch(IllegalAccessException E) {
+ bean = null;
+ } catch(InstantiationException E) {
+ bean = null;
+ }
+ }
+
+/* FIXME - Turned off since java.applet doesn't exist for libgcj.
+ * FIXME if(bean instanceof Applet) {
+ * FIXME Applet a = (Applet)bean;
+ * FIXME //a.setAppletContext(???);
+ * FIXME //a.setStub(???);
+ * FIXME if(serStream == null) {
+ * FIXME a.init();
+ * FIXME }
+ * FIXME }
+ * FIXME ********************************************************/
+
+ return bean;
+ }
+
+ /**
+ * Get the Bean as a different class type.
+ * This should be used instead of casting to get a new
+ * type view of a Bean, because in the future there may
+ * be new types of Bean, even Beans spanning multiple
+ * Objects.
+ * @param bean the Bean to cast.
+ * @param newClass the Class to cast it to.
+ * @return the Bean as a new view, or if the operation
+ * could not be performed, the Bean itself.
+ */
+ public static Object getInstanceOf(Object bean, Class newClass) {
+ return bean;
+ }
+
+ /**
+ * Determine whether the Bean can be cast to a different
+ * class type.
+ * This should be used instead of instanceof to determine
+ * a Bean's castability, because in the future there may
+ * be new types of Bean, even Beans spanning multiple
+ * Objects.
+ * @param bean the Bean to cast.
+ * @param newClass the Class to cast it to.
+ * @return whether the Bean can be cast to the class type
+ * in question.
+ */
+ public static boolean isInstanceOf(Object bean, Class newBeanClass) {
+ return newBeanClass.isInstance(bean);
+ }
+
+ /**
+ * Find out whether the GUI is available to use.
+ * Defaults to true.
+ * @return whether the GUI is available to use.
+ */
+ public static boolean isGuiAvailable() {
+ return guiAvailable;
+ }
+
+ /**
+ * Find out whether it is design time. Design time means
+ * we are in a RAD tool.
+ * Defaults to false.
+ * @return whether it is design time.
+ */
+ public static boolean isDesignTime() {
+ return designTime;
+ }
+
+ /**
+ * Set whether the GUI is available to use.
+ * @param guiAvailable whether the GUI is available to use.
+ */
+ public static void setGuiAvailable(boolean guiAvailable) throws SecurityException {
+ Beans.guiAvailable = guiAvailable;
+ }
+
+ /**
+ * Set whether it is design time. Design time means we
+ * are in a RAD tool.
+ * @param designTime whether it is design time.
+ */
+ public static void setDesignTime(boolean designTime) throws SecurityException {
+ Beans.designTime = designTime;
+ }
+}