예제 #1
0
  /**
   * Create a controller from specified classname
   *
   * @param classname Controller classname.
   * @return org.apache.struts.tiles.Controller
   * @throws InstantiationException if an error occur while instanciating Controller : (classname
   *     can't be instanciated, Illegal access with instanciated class, Error while instanciating
   *     class, classname can't be instanciated.
   */
  public static Controller createControllerFromClassname(String classname)
      throws InstantiationException {

    try {
      Class requestedClass = RequestUtils.applicationClass(classname);
      Object instance = requestedClass.newInstance();

      if (log.isDebugEnabled()) {
        log.debug("Controller created : " + instance);
      }
      return (Controller) instance;

    } catch (java.lang.ClassNotFoundException ex) {
      throw new InstantiationException("Error - Class not found :" + ex.getMessage());

    } catch (java.lang.IllegalAccessException ex) {
      throw new InstantiationException("Error - Illegal class access :" + ex.getMessage());

    } catch (java.lang.InstantiationException ex) {
      throw ex;

    } catch (java.lang.ClassCastException ex) {
      throw new InstantiationException(
          "Controller of class '"
              + classname
              + "' should implements 'Controller' or extends 'Action'");
    }
  }
예제 #2
0
파일: XBeeNode.java 프로젝트: KenC57/JMRI
 public void connectPortController(Class<jmri.jmrix.AbstractStreamPortController> T) {
   try {
     java.lang.reflect.Constructor<?> ctor =
         T.getConstructor(
             java.io.DataInputStream.class, java.io.DataOutputStream.class, String.class);
     connectedController =
         (jmri.jmrix.AbstractStreamPortController)
             ctor.newInstance(
                 getIOStream().getInputStream(),
                 getIOStream().getOutputStream(),
                 "XBee Node " + getPreferedName());
     connectedController.configure();
   } catch (java.lang.InstantiationException ie) {
     log.error("Unable to construct Stream Port Controller for node.");
     ie.printStackTrace();
   } catch (java.lang.NoSuchMethodException nsm) {
     log.error("Unable to construct Stream Port Controller for node.");
     nsm.printStackTrace();
   } catch (java.lang.IllegalAccessException iae) {
     log.error("Unable to construct Stream Port Controller for node.");
     iae.printStackTrace();
   } catch (java.lang.reflect.InvocationTargetException ite) {
     log.error("Unable to construct Stream Port Controller for node.");
     ite.printStackTrace();
   }
 }
예제 #3
0
  static final Object getInstanceProperty(String propertyName,
					  Class ofClass,
					  Class defaultClass)
  {
    Class klass = getClassProperty(propertyName, defaultClass);
    if (klass == null)
      return null;

    try
    {
      Object obj = klass.newInstance();
      if (ofClass.isInstance(obj))
	return obj;
    }
    catch (Exception _)
    {
    }

    if (defaultClass == null)
      return null;

    try
    {
      return defaultClass.newInstance();
    }
    catch (java.lang.InstantiationException ex)
    {
      throw new RuntimeException(ex.getMessage());
    }
    catch (java.lang.IllegalAccessException ex)
    {
      throw new RuntimeException(ex.getMessage());
    }
  }
예제 #4
0
 private void callPut(
     java.lang.Object object,
     com.beust.jcommander.Parameterized parameterized,
     java.lang.String key,
     java.lang.String value) {
   try {
     java.lang.reflect.Method m;
     m = findPut(parameterized.getType());
     m.invoke(parameterized.get(object), key, value);
   } catch (java.lang.SecurityException e) {
     e.printStackTrace();
   } catch (java.lang.IllegalAccessException e) {
     e.printStackTrace();
   } catch (java.lang.reflect.InvocationTargetException e) {
     e.printStackTrace();
   } catch (java.lang.NoSuchMethodException e) {
     e.printStackTrace();
   }
 }
예제 #5
0
 public Object getClone() {
   if (hasCloneMethod) {
     try {
       return method.invoke(object);
     } catch (java.lang.IllegalAccessException e) {
       e.printStackTrace();
     } catch (java.lang.reflect.InvocationTargetException e) {
       e.printStackTrace();
     }
     return null;
   } else {
     Object copy = Constructor.construct(object.getClass());
     for (Field field : fields) {
       try {
         field.set(copy, field.get(object));
       } catch (java.lang.IllegalAccessException e) {
         e.printStackTrace();
       }
     }
     return copy;
   }
 }
예제 #6
0
  /**
   * Create a new Bean instance.
   *
   * @param obj The reference object describing the Bean
   */
  @Override
  public Object getObjectInstance(
      Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws NamingException {

    if (obj instanceof ResourceRef) {

      try {

        Reference ref = (Reference) obj;
        String beanClassName = ref.getClassName();
        Class<?> beanClass = null;
        ClassLoader tcl = Thread.currentThread().getContextClassLoader();
        if (tcl != null) {
          try {
            beanClass = tcl.loadClass(beanClassName);
          } catch (ClassNotFoundException e) {
          }
        } else {
          try {
            beanClass = Class.forName(beanClassName);
          } catch (ClassNotFoundException e) {
            e.printStackTrace();
          }
        }
        if (beanClass == null) {
          throw new NamingException("Class not found: " + beanClassName);
        }

        BeanInfo bi = Introspector.getBeanInfo(beanClass);
        PropertyDescriptor[] pda = bi.getPropertyDescriptors();

        Object bean = beanClass.newInstance();

        Enumeration<RefAddr> e = ref.getAll();
        while (e.hasMoreElements()) {

          RefAddr ra = e.nextElement();
          String propName = ra.getType();

          if (propName.equals(Constants.FACTORY)
              || propName.equals("scope")
              || propName.equals("auth")
              || propName.equals("singleton")) {
            continue;
          }

          String value = (String) ra.getContent();

          Object[] valueArray = new Object[1];

          int i = 0;
          for (i = 0; i < pda.length; i++) {

            if (pda[i].getName().equals(propName)) {

              Class<?> propType = pda[i].getPropertyType();

              if (propType.equals(String.class)) {
                valueArray[0] = value;
              } else if (propType.equals(Character.class) || propType.equals(char.class)) {
                valueArray[0] = Character.valueOf(value.charAt(0));
              } else if (propType.equals(Byte.class) || propType.equals(byte.class)) {
                valueArray[0] = new Byte(value);
              } else if (propType.equals(Short.class) || propType.equals(short.class)) {
                valueArray[0] = new Short(value);
              } else if (propType.equals(Integer.class) || propType.equals(int.class)) {
                valueArray[0] = new Integer(value);
              } else if (propType.equals(Long.class) || propType.equals(long.class)) {
                valueArray[0] = new Long(value);
              } else if (propType.equals(Float.class) || propType.equals(float.class)) {
                valueArray[0] = new Float(value);
              } else if (propType.equals(Double.class) || propType.equals(double.class)) {
                valueArray[0] = new Double(value);
              } else if (propType.equals(Boolean.class) || propType.equals(boolean.class)) {
                valueArray[0] = Boolean.valueOf(value);
              } else {
                throw new NamingException(
                    "String conversion for property type '"
                        + propType.getName()
                        + "' not available");
              }

              Method setProp = pda[i].getWriteMethod();
              if (setProp != null) {
                setProp.invoke(bean, valueArray);
              } else {
                throw new NamingException("Write not allowed for property: " + propName);
              }

              break;
            }
          }

          if (i == pda.length) {
            throw new NamingException("No set method found for property: " + propName);
          }
        }

        return bean;

      } catch (java.beans.IntrospectionException ie) {
        NamingException ne = new NamingException(ie.getMessage());
        ne.setRootCause(ie);
        throw ne;
      } catch (java.lang.IllegalAccessException iae) {
        NamingException ne = new NamingException(iae.getMessage());
        ne.setRootCause(iae);
        throw ne;
      } catch (java.lang.InstantiationException ie2) {
        NamingException ne = new NamingException(ie2.getMessage());
        ne.setRootCause(ie2);
        throw ne;
      } catch (java.lang.reflect.InvocationTargetException ite) {
        NamingException ne = new NamingException(ite.getMessage());
        ne.setRootCause(ite);
        throw ne;
      }

    } else {
      return null;
    }
  }
예제 #7
0
  /**
   * Create a new Bean instance.
   *
   * @param obj The reference object describing the Bean
   */
  @Override
  public Object getObjectInstance(
      Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws NamingException {

    if (obj instanceof ResourceRef) {

      try {

        Reference ref = (Reference) obj;
        String beanClassName = ref.getClassName();
        Class<?> beanClass = null;
        ClassLoader tcl = Thread.currentThread().getContextClassLoader();
        if (tcl != null) {
          try {
            beanClass = tcl.loadClass(beanClassName);
          } catch (ClassNotFoundException e) {
          }
        } else {
          try {
            beanClass = Class.forName(beanClassName);
          } catch (ClassNotFoundException e) {
            e.printStackTrace();
          }
        }
        if (beanClass == null) {
          throw new NamingException("Class not found: " + beanClassName);
        }

        BeanInfo bi = Introspector.getBeanInfo(beanClass);
        PropertyDescriptor[] pda = bi.getPropertyDescriptors();

        Object bean = beanClass.newInstance();

        /* Look for properties with explicitly configured setter */
        RefAddr ra = ref.get("forceString");
        Map<String, Method> forced = new HashMap<String, Method>();
        String value;

        if (ra != null) {
          value = (String) ra.getContent();
          Class<?> paramTypes[] = new Class[1];
          paramTypes[0] = String.class;
          String setterName;
          int index;

          /* Items are given as comma separated list */
          for (String param : value.split(",")) {
            param = param.trim();
            /* A single item can either be of the form name=method
             * or just a property name (and we will use a standard
             * setter) */
            index = param.indexOf('=');
            if (index >= 0) {
              setterName = param.substring(index + 1).trim();
              param = param.substring(0, index).trim();
            } else {
              setterName =
                  "set" + param.substring(0, 1).toUpperCase(Locale.ENGLISH) + param.substring(1);
            }
            try {
              forced.put(param, beanClass.getMethod(setterName, paramTypes));
            } catch (NoSuchMethodException ex) {
              throw new NamingException(
                  "Forced String setter " + setterName + " not found for property " + param);
            } catch (SecurityException ex) {
              throw new NamingException(
                  "Forced String setter " + setterName + " not allowed for property " + param);
            }
          }
        }

        Enumeration<RefAddr> e = ref.getAll();

        while (e.hasMoreElements()) {

          ra = e.nextElement();
          String propName = ra.getType();

          if (propName.equals(Constants.FACTORY)
              || propName.equals("scope")
              || propName.equals("auth")
              || propName.equals("forceString")
              || propName.equals("singleton")) {
            continue;
          }

          value = (String) ra.getContent();

          Object[] valueArray = new Object[1];

          /* Shortcut for properties with explicitly configured setter */
          Method method = forced.get(propName);
          if (method != null) {
            valueArray[0] = value;
            try {
              method.invoke(bean, valueArray);
            } catch (IllegalAccessException ex) {
              throw new NamingException(
                  "Forced String setter "
                      + method.getName()
                      + " threw IllegalAccessException for property "
                      + propName);
            } catch (IllegalArgumentException ex) {
              throw new NamingException(
                  "Forced String setter "
                      + method.getName()
                      + " threw IllegalArgumentException for property "
                      + propName);
            } catch (InvocationTargetException ex) {
              throw new NamingException(
                  "Forced String setter "
                      + method.getName()
                      + " threw InvocationTargetException for property "
                      + propName);
            }
            continue;
          }

          int i = 0;
          for (i = 0; i < pda.length; i++) {

            if (pda[i].getName().equals(propName)) {

              Class<?> propType = pda[i].getPropertyType();

              if (propType.equals(String.class)) {
                valueArray[0] = value;
              } else if (propType.equals(Character.class) || propType.equals(char.class)) {
                valueArray[0] = Character.valueOf(value.charAt(0));
              } else if (propType.equals(Byte.class) || propType.equals(byte.class)) {
                valueArray[0] = Byte.valueOf(value);
              } else if (propType.equals(Short.class) || propType.equals(short.class)) {
                valueArray[0] = Short.valueOf(value);
              } else if (propType.equals(Integer.class) || propType.equals(int.class)) {
                valueArray[0] = Integer.valueOf(value);
              } else if (propType.equals(Long.class) || propType.equals(long.class)) {
                valueArray[0] = Long.valueOf(value);
              } else if (propType.equals(Float.class) || propType.equals(float.class)) {
                valueArray[0] = Float.valueOf(value);
              } else if (propType.equals(Double.class) || propType.equals(double.class)) {
                valueArray[0] = Double.valueOf(value);
              } else if (propType.equals(Boolean.class) || propType.equals(boolean.class)) {
                valueArray[0] = Boolean.valueOf(value);
              } else {
                throw new NamingException(
                    "String conversion for property "
                        + propName
                        + " of type '"
                        + propType.getName()
                        + "' not available");
              }

              Method setProp = pda[i].getWriteMethod();
              if (setProp != null) {
                setProp.invoke(bean, valueArray);
              } else {
                throw new NamingException("Write not allowed for property: " + propName);
              }

              break;
            }
          }

          if (i == pda.length) {
            throw new NamingException("No set method found for property: " + propName);
          }
        }

        return bean;

      } catch (java.beans.IntrospectionException ie) {
        NamingException ne = new NamingException(ie.getMessage());
        ne.setRootCause(ie);
        throw ne;
      } catch (java.lang.IllegalAccessException iae) {
        NamingException ne = new NamingException(iae.getMessage());
        ne.setRootCause(iae);
        throw ne;
      } catch (java.lang.InstantiationException ie2) {
        NamingException ne = new NamingException(ie2.getMessage());
        ne.setRootCause(ie2);
        throw ne;
      } catch (java.lang.reflect.InvocationTargetException ite) {
        Throwable cause = ite.getCause();
        if (cause instanceof ThreadDeath) {
          throw (ThreadDeath) cause;
        }
        if (cause instanceof VirtualMachineError) {
          throw (VirtualMachineError) cause;
        }
        NamingException ne = new NamingException(ite.getMessage());
        ne.setRootCause(ite);
        throw ne;
      }

    } else {
      return null;
    }
  }
예제 #8
0
  public Atm() // constructor
        // sets the customer array to that found in the file if the file exists
      {
    try {
      // Set cross-platform Java L&F (also called "Metal")
      UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    } catch (UnsupportedLookAndFeelException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (InstantiationException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    }

    if (logFile.exists()) {
      try {
        adminLogs = returnLog("p2.log");
        if (!adminLogs.isEmpty()) {
          // there may be customer data but perhaps no transactions yet.
          ArrayList<Integer> allTransactions = new ArrayList<>(100);
          for (AdminLog a : adminLogs) {

            int transaction = a.getTransactionID();
            ;
            allTransactions.add(transaction);
          }
          transaction_counter = Collections.max(allTransactions) + 1;
        }
      } catch (ClassNotFoundException | IOException e) {
        e.printStackTrace();
      }
    }

    if (DBfile.exists()) {
      try {

        cust = returnSavedData("p2.dat");

        // sets the starting ID to the max of all the IDs stored in the file.
        allIDs = new ArrayList<Integer>(100);
        ArrayList<Integer> allAccounts = new ArrayList<>();
        for (Customer customer : cust) {
          String idString = customer.returnID();
          int id = Integer.parseInt(idString);
          allIDs.add(id);
          int accountNumber = customer.returnMaxAccount();
          allAccounts.add(accountNumber);
        }
        // checks to see if the customer has even made any accounts, if not, max accounts will be
        // set at 1001
        if (starting_account_number != 1) {
          starting_account_number = Collections.max(allAccounts) + 1;
        }
        starting_customer_number = Collections.max(allIDs) + 1;

      } catch (ClassNotFoundException | IOException e) {
        e.printStackTrace();
      }
    } else {
      cust = new ArrayList<>(100);
      // creates the file if it does not exist
      try {
        saveFile(cust, DBfile);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    interest_rate = 5;
  }