You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Type.java 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.metadata;
  5. public class Type {
  6. private final String name;
  7. private final Type[] parameterTypes;
  8. public Type(Class<?> clazz) {
  9. name = clazz.getName();
  10. parameterTypes = null;
  11. }
  12. public Type(String baseTypeName, Type[] parameterTypes) {
  13. name = baseTypeName;
  14. this.parameterTypes = parameterTypes;
  15. }
  16. public String getBaseTypeName() {
  17. return name;
  18. }
  19. public Type[] getParameterTypes() {
  20. return parameterTypes;
  21. }
  22. public Object createInstance() throws NoDataException {
  23. Invoker invoker = TypeDataStore.getConstructor(this);
  24. return invoker.invoke(null, null);
  25. }
  26. public Method getMethod(String name) {
  27. return new Method(this, name);
  28. }
  29. public Property getProperty(String propertyName) {
  30. return new Property(this, propertyName);
  31. }
  32. public String getSignature() {
  33. String string = name;
  34. if (parameterTypes != null && parameterTypes.length != 0) {
  35. string += '<';
  36. for (int i = 0; i < parameterTypes.length; i++) {
  37. if (i != 0) {
  38. string += ',';
  39. }
  40. string += parameterTypes[i].toString();
  41. }
  42. string += '>';
  43. }
  44. return string;
  45. }
  46. @Override
  47. public String toString() {
  48. return getSignature();
  49. }
  50. @Override
  51. public boolean equals(Object obj) {
  52. if (obj == this) {
  53. return true;
  54. } else if (obj instanceof Type) {
  55. Type other = (Type) obj;
  56. return other.getSignature().equals(getSignature());
  57. } else {
  58. return false;
  59. }
  60. }
  61. @Override
  62. public int hashCode() {
  63. return getSignature().hashCode();
  64. }
  65. public Object createProxy(InvokationHandler invokationHandler)
  66. throws NoDataException {
  67. return TypeDataStore.get().getProxyHandler(this)
  68. .createProxy(invokationHandler);
  69. }
  70. }