From 4cb8262e95fde77e6a0d2c84f1aa118e3b1ee850 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 06 Nov 2014 14:50:48 +0000
Subject: [PATCH] OPENDJ-1591 CR-5092 Switch server to SDK matching rules
---
opendj3-server-dev/replace.rb | 62 +++++++++++++++++++++---------
1 files changed, 43 insertions(+), 19 deletions(-)
diff --git a/opendj3-server-dev/replace.rb b/opendj3-server-dev/replace.rb
index 95d6bd1..d3210ab 100755
--- a/opendj3-server-dev/replace.rb
+++ b/opendj3-server-dev/replace.rb
@@ -7,10 +7,14 @@
#
# To define a new replacement, add a new constant like VALIDATOR.
#
-# It should be a ruby Hash with three mandatory keys and one optional key:
+# It should be a ruby Hash with three mandatory keys and two optional key.
+#
+# The mandatory keys are:
#
# :dirs => a list of directory to run replacements. All subdirs are processed.
+#
# :extensions => a list of file extensions. Only file with these extensions are processed.
+#
# :replacements => a list of replacements, lines are processed 2 by 2
# - first line gives the pattern to replace, as a ruby regexp (see http://rubular.com/ for help and tool)
# - second line gives the replacement string, using \1, \2, ... to insert matching groups. This is a string,
@@ -19,8 +23,16 @@
# It is ok to leave a new line to separate each pair of line for readability.
# It is ok to use a comment in the array (use # as first non blank character of line).
#
-# The optional key is :stopwords => a list of stopword. If any word in this list appears in a file name, the file
-# is not processed. Use it to exclude some files or directory that must not be processed.
+# The optional keys are:
+#
+# :whitelist => a list of mandatory words. If any word in this list appears in a file name, the file
+# is processed, otherwise it is ignored. Use it to explicitely indicates files to process.
+#
+# :stoplist => a list of stop words. If any word in this list appears in a file name, the file
+# is not processed. Use it to exclude some files or directory that must not be processed.
+#
+# Note that if you use both whitelist and stoplist, a word in stoplist can prevent processing a file even if it
+# matches the whitelist content.
#
# Once you have define your replacement, add the constant in REPLACEMENTS array. it will be taken into account when
# running the program (run it at root of project) with command: ./replace.rb
@@ -38,7 +50,7 @@
MRULES_TO_SDK = {
:dirs => JAVA_DIRS + SNMP_DIR,
:extensions => ["java"],
- :stopwords => ["MatchingRule"],
+ :stoplist => ["MatchingRule"],
:replacements =>
[
/import org.opends.server.api.MatchingRule;/,
@@ -50,7 +62,6 @@
MRULES_FACTORIES = {
:dirs => ["src/server/org/opends/server/schema"],
:extensions => ["java"],
- :stopwords => [],
:replacements =>
[
/import org.opends.server.api.MatchingRule;/,
@@ -71,10 +82,21 @@
]
}
+ MRULES_API_PACKAGE = {
+ :dirs => ["src/server/org/opends/server/api"],
+ :extensions => ["java"],
+ :stoplist => ["MatchingRule.java"],
+ :replacements =>
+ [
+ /\bMatchingRule\b/,
+ "org.forgerock.opendj.ldap.schema.MatchingRule",
+ ]
+ }
+
MRULES = {
:dirs => JAVA_DIRS + SNMP_DIR,
:extensions => ["java"],
- :stopwords => ["MatchingRule"],
+ :stoplist => ["MatchingRule"],
:replacements =>
[
@@ -91,7 +113,7 @@
SYNTAX = {
:dirs => JAVA_DIRS + SNMP_DIR,
:extensions => ["java"],
- :stopwords => ["Syntax"],
+ :stoplist => ["Syntax"],
:replacements =>
[
@@ -116,7 +138,7 @@
ATTRTYPE = {
:dirs => JAVA_DIRS + SNMP_DIR,
:extensions => ["java"],
- :stopwords => [],
+ :stoplist => [],
:replacements =>
[
@@ -136,7 +158,7 @@
NEW_CONFIG = {
:dirs => JAVA_DIRS + SNMP_DIR,
:extensions => ["java"],
- :stopwords => ["org/opends/server/admin", "api/Config", "MatchingRuleConfigManager"],
+ :stoplist => ["org/opends/server/admin", "api/Config", "MatchingRuleConfigManager"],
:replacements =>
[
/import org.opends.server.admin.std.server\.([^;]+);/,
@@ -360,7 +382,7 @@
############################### List of replacements to run #################################
- REPLACEMENTS = [ MRULES_TO_SDK, MRULES_FACTORIES ]
+ REPLACEMENTS = [ MRULES_TO_SDK, MRULES_FACTORIES, MRULES_API_PACKAGE ]
################################### Processing methods ########################################
@@ -368,20 +390,22 @@
def run
REPLACEMENTS.each { |repl|
puts "Replacing " + Replace.constants.find{ |name| Replace.const_get(name)==repl }.to_s
- stopwords = repl[:stopwords] || ["--nostopword--"]
- replace_dirs(repl[:replacements], repl[:dirs], stopwords, repl[:extensions])
+ stoplist = repl[:stoplist] || []
+ whitelist = repl[:whitelist] || []
+ replace_dirs(repl[:replacements], repl[:dirs], stoplist, whitelist, repl[:extensions])
}
end
# Process replacements on the provided directories
- def replace_dirs(replacements, dirs, stopwords, extensions)
+ def replace_dirs(replacements, dirs, stoplist, whitelist, extensions)
count_files = 0
count_total = 0
dirs.each { |directory|
files = files_under_directory(directory, extensions)
files.each { |file|
- exclude_file = stopwords.any? { |stopword| file.include?(stopword) }
- next if exclude_file
+ filename_has_stopword = stoplist.any? { |stopword| file.include?(stopword) }
+ filename_has_whiteword = whitelist.any? { |whiteword| file.include?(whiteword) }
+ next if filename_has_stopword || (!whitelist.empty? && !filename_has_whiteword)
count = replace_file(file, replacements)
if count > 0
count_files += 1
@@ -421,15 +445,15 @@
# Process provided directories
# Expects a processing block accepting a file as argument and returning a count of changes dones
- def process_dirs(dirs, stopwords, extensions)
+ def process_dirs(dirs, stoplist, whitelist, extensions)
count_files = 0
count_total = 0
dirs.each { |directory|
files = files_under_directory(directory, extensions)
files.each { |file|
- puts file.to_s + " stopwords:" + stopwords.to_s
- exclude_file = stopwords.any? { |stopword| file.include?(stopword) }
- next if exclude_file
+ filename_has_stopword = stoplist.any? { |stopword| file.include?(stopword) }
+ filename_has_whiteword = whitelist.any? { |whiteword| file.include?(whiteword) }
+ next if filename_has_stopword || (!whitelist.empty? && !filename_has_whiteword)
count = yield file # call the block
if count > 0
count_files += 1
--
Gitblit v1.10.0