+ Properties typedefs = getDefs(project, SLC_TYPEDEFS_RESOURCE_PATH);\r
+ for (Object o : typedefs.keySet()) {\r
+ String name = o.toString();\r
+ try {\r
+ project.addDataTypeDefinition(name, Class.forName(typedefs\r
+ .getProperty(name)));\r
+ } catch (ClassNotFoundException e) {\r
+ log.error("Unknown class for type " + name, e);\r
+ }\r
+ }\r
+ }\r
+\r
+ private static Properties getDefs(Project project, String path) {\r
+ Properties defs = new Properties();\r
+ try {\r
+ InputStream in = project.getClass().getResourceAsStream(path);\r
+ defs.load(in);\r
+ in.close();\r
+ } catch (IOException e) {\r
+ throw new SlcAntException("Cannot load task definitions", e);\r
+ }\r
+ return defs;\r
+ }\r
+\r
+ protected static void createAndRegisterSlcExecution(Project project) {\r
+ SlcExecution slcExecution = new SlcExecution();\r
+ slcExecution.setUuid(UUID.randomUUID().toString());\r
+ try {\r
+ slcExecution.setHost(InetAddress.getLocalHost().getHostName());\r
+ } catch (UnknownHostException e) {\r
+ slcExecution.setHost(SlcExecution.UNKOWN_HOST);\r
+ }\r
+\r
+ if (project.getReference(SlcProjectHelper.REF_ROOT_CONTEXT) != null) {\r
+ slcExecution.setType(SlcExecutionBuildListener.SLC_ANT_TYPE);\r
+ } else {\r
+ slcExecution.setType(SlcExecutionBuildListener.ANT_TYPE);\r
+ }\r
+\r
+ slcExecution.setUser(System.getProperty("user.name"));\r
+ slcExecution.setStatus(SlcExecution.STATUS_RUNNING);\r
+ slcExecution.getAttributes().put("ant.file",\r
+ project.getProperty("ant.file"));\r
+\r
+ project.addReference(SlcExecutionBuildListener.REF_SLC_EXECUTION,\r
+ slcExecution);\r
+\r
+ // Add build listeners declared in Spring context\r
+ Map<String, ProjectRelatedBuildListener> listeners = ((ListableBeanFactory) project\r
+ .getReference(REF_ROOT_CONTEXT)).getBeansOfType(\r
+ ProjectRelatedBuildListener.class, false, true);\r
+ for (ProjectRelatedBuildListener listener : listeners.values()) {\r
+ listener.init(project);\r
+ project.addBuildListener(listener);\r
+ }\r
+\r