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.

DesignContext.java 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright 2000-2014 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.ui.declarative;
  17. import java.util.Collections;
  18. import java.util.HashMap;
  19. import java.util.Map;
  20. /**
  21. * This class contains contextual information that is collected when a component
  22. * tree is constructed based on HTML design template
  23. *
  24. * @since 7.4
  25. * @author Vaadin Ltd
  26. */
  27. public class DesignContext {
  28. // cache for object instances
  29. private static Map<Class<?>, Object> instanceCache = Collections
  30. .synchronizedMap(new HashMap<Class<?>, Object>());
  31. /**
  32. * Returns the default instance for the given class. The instance must not
  33. * be modified by the caller.
  34. *
  35. * @since
  36. * @param instanceClass
  37. * @return
  38. */
  39. public <T> T getDefaultInstance(Class<T> instanceClass) {
  40. T instance = (T) instanceCache.get(instanceClass);
  41. if (instance == null) {
  42. try {
  43. instance = instanceClass.newInstance();
  44. } catch (InstantiationException e) {
  45. e.printStackTrace();
  46. } catch (IllegalAccessException e) {
  47. e.printStackTrace();
  48. }
  49. instanceCache.put(instanceClass, instance);
  50. }
  51. return instance;
  52. }
  53. }