test_class.file: server-core/src/test/java/io/onedev/server/util/IssueUtilsTest.java
test_class.identifier: IssueUtilsTest
test_case.body: @Test
  	public void testParseFixedIssueNumbers() {
  		assertEquals(Sets.newHashSet(1L, 2L, 3L, 4L), IssueUtils.parseFixedIssueNumbers(
  				"fix issue #1,fixing issue #2 fix issue #3 and resolve issue #4: gogogo"));
  	}
test_case.class_method_signature: IssueUtilsTest.testParseFixedIssueNumbers()
test_case.full_signature: @Test public void testParseFixedIssueNumbers()
test_case.identifier: testParseFixedIssueNumbers
test_case.invocations: assertEquals newHashSet parseFixedIssueNumbers
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testParseFixedIssueNumbers()
focal_class.declarator: ISSUE_FIX_WORDS = Lists.newArrayList(
  			"fix", "fixed", "fixes", "fixing", 
  			"resolve", "resolved", "resolves", "resolving", 
  			"close", "closed", "closes", "closing")
focal_class.modifier: private static final
focal_class.original_string: private static final List<String> ISSUE_FIX_WORDS = Lists.newArrayList(
  			"fix", "fixed", "fixes", "fixing", 
  			"resolve", "resolved", "resolves", "resolving", 
  			"close", "closed", "closes", "closing");
focal_class.type: List<String>
focal_class.var_name: ISSUE_FIX_WORDS
focal_class.declarator: ISSUE_FIX_PATTERN
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern ISSUE_FIX_PATTERN;
focal_class.type: Pattern
focal_class.var_name: ISSUE_FIX_PATTERN
focal_class.declarator: FIELD_BEAN_PREFIX = "IssueFieldBean"
focal_class.modifier: private static final
focal_class.original_string: private static final String FIELD_BEAN_PREFIX = "IssueFieldBean";
focal_class.type: String
focal_class.var_name: FIELD_BEAN_PREFIX
focal_class.file: server-core/src/main/java/io/onedev/server/util/IssueUtils.java
focal_class.identifier: IssueUtils
focal_class.class_method_signature: IssueUtils.clearFields(Serializable fieldBean)
focal_class.full_signature: public static void clearFields(Serializable fieldBean)
focal_class.identifier: clearFields
focal_class.modifiers: public static
focal_class.parameters: (Serializable fieldBean)
focal_class.return: void
focal_class.signature: void clearFields(Serializable fieldBean)
focal_class.class_method_signature: IssueUtils.defineFieldBeanClass(Project project)
focal_class.full_signature: @SuppressWarnings("unchecked") public static Class<? extends Serializable> defineFieldBeanClass(Project project)
focal_class.identifier: defineFieldBeanClass
focal_class.modifiers: @SuppressWarnings("unchecked") public static
focal_class.parameters: (Project project)
focal_class.return: Class<? extends Serializable>
focal_class.signature: Class<? extends Serializable> defineFieldBeanClass(Project project)
focal_class.class_method_signature: IssueUtils.loadFieldBeanClass(String className)
focal_class.full_signature: @Nullable public static Class<? extends Serializable> loadFieldBeanClass(String className)
focal_class.identifier: loadFieldBeanClass
focal_class.modifiers: @Nullable public static
focal_class.parameters: (String className)
focal_class.return: Class<? extends Serializable>
focal_class.signature: Class<? extends Serializable> loadFieldBeanClass(String className)
focal_class.class_method_signature: IssueUtils.getPropertyNames(Project project, Class<?> fieldBeanClass, Collection<String> fieldNames)
focal_class.full_signature: public static Collection<String> getPropertyNames(Project project, Class<?> fieldBeanClass, Collection<String> fieldNames)
focal_class.identifier: getPropertyNames
focal_class.modifiers: public static
focal_class.parameters: (Project project, Class<?> fieldBeanClass, Collection<String> fieldNames)
focal_class.return: Collection<String>
focal_class.signature: Collection<String> getPropertyNames(Project project, Class<?> fieldBeanClass, Collection<String> fieldNames)
focal_class.class_method_signature: IssueUtils.getFieldValues(ComponentContext context, Serializable fieldBean, Collection<String> fieldNames)
focal_class.full_signature: public static Map<String, Object> getFieldValues(ComponentContext context, Serializable fieldBean, Collection<String> fieldNames)
focal_class.identifier: getFieldValues
focal_class.modifiers: public static
focal_class.parameters: (ComponentContext context, Serializable fieldBean, Collection<String> fieldNames)
focal_class.return: Map<String, Object>
focal_class.signature: Map<String, Object> getFieldValues(ComponentContext context, Serializable fieldBean, Collection<String> fieldNames)
focal_class.class_method_signature: IssueUtils.parseFixedIssueNumbers(String commitMessage)
focal_class.full_signature: public static Collection<Long> parseFixedIssueNumbers(String commitMessage)
focal_class.identifier: parseFixedIssueNumbers
focal_class.modifiers: public static
focal_class.parameters: (String commitMessage)
focal_class.return: Collection<Long>
focal_class.signature: Collection<Long> parseFixedIssueNumbers(String commitMessage)
focal_method.body: public static Collection<Long> parseFixedIssueNumbers(String commitMessage) {
  		Collection<Long> issueNumbers = new HashSet<>();
  
  		// Skip unmatched commit message quickly 
  		boolean fixWordsFound = false;
  		String lowerCaseCommitMessage = commitMessage.toLowerCase();
  		for (String word: ISSUE_FIX_WORDS) {
  			if (lowerCaseCommitMessage.indexOf(word) != -1) {
  				fixWordsFound = true;
  				break;
  			}
  		}
  		
  		if (fixWordsFound 
  				&& lowerCaseCommitMessage.contains("#") 
  				&& lowerCaseCommitMessage.contains("issue")) {
  			Matcher matcher = ISSUE_FIX_PATTERN.matcher(lowerCaseCommitMessage);
  			while (matcher.find())
  				issueNumbers.add(Long.parseLong(matcher.group(3)));
  		}
  		
  		return issueNumbers;
  	}
focal_method.class_method_signature: IssueUtils.parseFixedIssueNumbers(String commitMessage)
focal_method.full_signature: public static Collection<Long> parseFixedIssueNumbers(String commitMessage)
focal_method.identifier: parseFixedIssueNumbers
focal_method.invocations: toLowerCase indexOf contains contains matcher find add parseLong group
focal_method.modifiers: public static
focal_method.parameters: (String commitMessage)
focal_method.return: Collection<Long>
focal_method.signature: Collection<Long> parseFixedIssueNumbers(String commitMessage)