/* __ *\ ** ________ ___ / / ___ Scala API ** ** / __/ __// _ | / / / _ | (c) 2002-2009, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** \* */ // $Id: ScalaBeanInfo.scala 16884 2009-01-09 16:52:09Z cunei $ package scala.reflect /** Provides some simple runtime processing necessary to create * JavaBean descriptors for Scala entities. The compiler creates * subclasses of this class automatically when the BeanInfo annotation is * attached to a class. * * @author Ross Judson ([email protected]) */ abstract class ScalaBeanInfo(clazz: java.lang.Class[_], props: Array[String], methods: Array[String]) extends java.beans.SimpleBeanInfo { import java.beans._ private val pd = new Array[PropertyDescriptor](props.length / 3) private val md = for (m <- clazz.getMethods if methods.exists(_ == m.getName)) yield new MethodDescriptor(m) init override def getPropertyDescriptors() = pd override def getMethodDescriptors() = md // override def getAdditionalBeanInfo() = Array(Introspector getBeanInfo clazz.getSuperclass) private def init { var i = 0; while (i < props.length) { pd(i/3) = new PropertyDescriptor(props(i), clazz, props(i+1), props(i+2)) i = i + 3; } } }