diff --git a/extras/injection/src/main/java/conf/portal/configuration.xml b/extras/injection/src/main/java/conf/portal/configuration.xml
index 031b658836..1af7c02216 100644
--- a/extras/injection/src/main/java/conf/portal/configuration.xml
+++ b/extras/injection/src/main/java/conf/portal/configuration.xml
@@ -31,7 +31,7 @@
org.exoplatform.forum.extras.injection.forum.CategoryInjector
-
+
org.exoplatform.forum.extras.injection.forum.ForumInjector
@@ -54,6 +54,27 @@
+
+ org.exoplatform.forum.extras.injection.faq.CategoryInjector
+
+
+ org.exoplatform.forum.extras.injection.faq.AnswerInjector
+
+
+ org.exoplatform.forum.extras.injection.faq.ProfileInjector
+
+
+ org.exoplatform.forum.extras.injection.faq.QuestionInjector
+
+
+ org.exoplatform.forum.extras.injection.faq.CommentInjector
+
+
+ org.exoplatform.forum.extras.injection.faq.AttachmentInjector
+
+
+ org.exoplatform.forum.extras.injection.faq.MembershipInjector
+
org.exoplatform.services.bench.DataInjectorService
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AbstractFAQInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AbstractFAQInjector.java
index 268c4373f8..bdb5799401 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AbstractFAQInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AbstractFAQInjector.java
@@ -1,8 +1,6 @@
package org.exoplatform.forum.extras.injection.faq;
-import java.util.Arrays;
import java.util.HashMap;
-import java.util.List;
import java.util.Random;
import javax.jcr.Node;
@@ -295,7 +293,7 @@ public Question getQuestionByName(String questionName) throws Exception {
question.setQuestion(questionName);
question.setPath(quesNodePath.substring(quesNodePath.indexOf(KSDataLocation.Locations.FAQ_CATEGORIES_HOME)));
question.setTopicIdDiscuss(reader.string(FAQNodeTypes.EXO_TOPIC_ID_DISCUSS));
- question.setUsersWatch(reader.strings(FAQNodeTypes.EXO_USER_WATCHING));
+ question.setUsersVote(reader.strings(FAQNodeTypes.EXO_USERS_VOTE));
return question;
}
@@ -315,6 +313,8 @@ public Answer getAnswerByName(String answerName) throws Exception {
PropertyReader reader = new PropertyReader(answerNode);
answer.setDateResponse(reader.date(FAQNodeTypes.EXO_DATE_RESPONSE));
answer.setId(reader.string(FAQNodeTypes.EXO_ID));
+ answer.setLanguage(reader.string(FAQNodeTypes.EXO_LANGUAGE));
+ answer.setUsersVoteAnswer(reader.strings(FAQNodeTypes.EXO_USERS_VOTE_ANSWER));
return answer;
}
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AnswerInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AnswerInjector.java
index 11ceb11b3c..772643d26d 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AnswerInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AnswerInjector.java
@@ -24,31 +24,36 @@ public class AnswerInjector extends AbstractFAQInjector {
@Override
public void inject(HashMap params) throws Exception {
+ //
int number = param(params, NUMBER);
int fromQues = param(params, FROM_QUES);
int toQues = param(params, TO_QUES);
String questionPrefix = params.get(QUESTION_PREFIX);
String answerPrefix = params.get(ANSWER_PREFIX);
+ init(null, null, questionPrefix, answerPrefix, null, 0);
//
- init(null, null, questionPrefix, answerPrefix, null, 0);
-
- int q = fromQues;
- for (;q <= toQues; q++) {
-
- String questionName = questionBase + q;
- Question question = getQuestionByName(questionName);
+ String questionName = null;
+ String answerName = null;
+ Question question = null;
+ Answer answer = null;
+
+ for (int i = fromQues;i <= toQues; i++) {
+ //
+ questionName = questionBase + i;
+ question = getQuestionByName(questionName);
if (question == null) {
getLog().info("Question name '" + questionName + "' is wrong. Aborting injection ..." );
return;
}
//
- String answerName = null;
- for (int i = 0; i < number; i++) {
+ for (int j = 0; j < number; j++) {
+ //
answerName = answerName();
- Answer answer = new Answer();
+ //
+ answer = new Answer();
answer.setFullName(answerName);
answer.setLanguage("English");
answer.setMarksVoteAnswer(0.0);
@@ -57,12 +62,13 @@ public void inject(HashMap params) throws Exception {
answer.setResponseBy(question.getAuthor());
answer.setResponses(lorem.getParagraphs(1));
+ //
faqService.saveAnswer(question.getPath(), answer, true);
answerNumber++;
+ //
getLog().info("Answer '" + answerName + "' created by " + question.getAuthor());
}
}
-
}
}
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AttachmentInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AttachmentInjector.java
index 73f2498a49..54d74acbc9 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AttachmentInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/AttachmentInjector.java
@@ -43,13 +43,11 @@ public class AttachmentInjector extends AbstractFAQInjector {
@Override
public void inject(HashMap params) throws Exception {
+ //
int number = param(params, NUMBER);
int fromQues = param(params, FROM_QUES);
int toQues = param(params, TO_QUES);
-
String questionPrefix = params.get(QUESTION_PREFIX);
-
- //
init(null, null, questionPrefix, null, null, 0);
//
@@ -59,10 +57,12 @@ public void inject(HashMap params) throws Exception {
return;
}
+ //
String questionName = null;
Question question = null;
for (int i = fromQues; i <= toQues; ++i) {
+ //
questionName = questionBase + i;
question = getQuestionByName(questionName);
if (question == null) {
@@ -70,14 +70,17 @@ public void inject(HashMap params) throws Exception {
return;
}
+ //
generateAttachments(question, QUESTION_PREFIX, number, byteSize);
faqService.saveQuestion(question, false, faqSetting);
+ //
getLog().info("Uploads " + number + " attachments into '" + questionName + "' with each attachment's " + byteSize + " byte(s)");
}
}
private void generateAttachments(Question question, String prefix, int number, int byteSize) throws Exception {
+ //
if (question.getAttachMent() == null || question.getAttachMent().size() == 0) {
question.setAttachMent(new ArrayList());
}
@@ -89,6 +92,7 @@ private void generateAttachments(Question question, String prefix, int number, i
FileAttachment att = null;
for (int i = 0; i < number; i++) {
+ //
attId = generateId(prefix + baseNumber, Utils.ATTACHMENT, byteSize, i);
att = new FileAttachment();
att.setId(attId);
@@ -99,6 +103,8 @@ private void generateAttachments(Question question, String prefix, int number, i
long fileSize = (long) byteSize * 1024;
att.setSize(fileSize);
question.getAttachMent().add(att);
+
+ //
baseNumber++;
}
}
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CategoryInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CategoryInjector.java
index b53dc48b44..20039f4bd5 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CategoryInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CategoryInjector.java
@@ -14,17 +14,21 @@ public class CategoryInjector extends AbstractFAQInjector {
@Override
public void inject(HashMap params) throws Exception {
+ //
int number = param(params, NUMBER);
String categoryPrefix = params.get(CATEGORY_PREFIX);
init(null, categoryPrefix, null, null, null, 0);
-
+
+ //
Category rootCategory = getCategoryRoot(true);
String categoryName = null;
Category cat = null;
for(int i = 0; i < number; i++) {
+ //
categoryName = categoryName();
-
+
+ //
cat = new Category();
cat.setIndex(i);
cat.setName(categoryName);
@@ -32,9 +36,11 @@ public void inject(HashMap params) throws Exception {
cat.setModerators(new String[] {""});
cat.setUserPrivate(new String[] {""});
+ //
faqService.saveCategory(rootCategory.getPath(), cat, true);
categoryNumber++;
+ //
getLog().info("Category '" + categoryName + "' created with parent is '" + rootCategory.getId() + "'");
}
}
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CommentInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CommentInjector.java
index 41f6cc9cf5..3fc3b3af7a 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CommentInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/CommentInjector.java
@@ -16,39 +16,47 @@ public class CommentInjector extends AbstractFAQInjector {
/** . */
private static final String QUESTION_PREFIX = "quesPrefix";
+ /** . */
+ private static final String COMMENT_PREFIX = "commentPrefix";
@Override
public void inject(HashMap params) throws Exception {
+ //
int number = param(params, NUMBER);
- int to = param(params, TO_QUES);
+ int toQues = param(params, TO_QUES);
String questionPrefix = params.get(QUESTION_PREFIX);
-
- //
- init(null, null, questionPrefix, null, null, 0);
+ String commentPrefix = params.get(COMMENT_PREFIX);
+ init(null, null, questionPrefix, null, commentPrefix, 0);
//
- String questionName = questionBase + to;
+ String questionName = questionBase + toQues;
Question question = getQuestionByName(questionName);
if (question == null) {
getLog().info("Question name '" + questionName + "' is wrong. Aborting injection ..." );
return;
}
+ //
String commentName = null;
+ Comment comment = null;
- for (int i = 0; i <= number; i++) {
+ for (int i = 0; i < number; i++) {
+ //
commentName = commentName();
-
- Comment comment = new Comment();
+
+ //
+ comment = new Comment();
comment.setCommentBy(question.getAuthor());
comment.setComments(lorem.getParagraphs(1));
comment.setFullName(commentName);
comment.setNew(true);
comment.setPostId("");
+ //
faqService.saveComment(question.getPath(), comment, true);
commentNumber++;
+ //
getLog().info("Comment '" + commentName + "' created by " + question.getAuthor());
}
}
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/MembershipInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/MembershipInjector.java
index 2180c24c2d..2fae045003 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/MembershipInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/MembershipInjector.java
@@ -1,5 +1,170 @@
package org.exoplatform.forum.extras.injection.faq;
-public class MembershipInjector {
+import java.util.Arrays;
+import java.util.HashMap;
+import org.exoplatform.faq.service.Answer;
+import org.exoplatform.faq.service.Category;
+import org.exoplatform.faq.service.Question;
+import org.exoplatform.faq.service.Utils;
+
+public class MembershipInjector extends AbstractFAQInjector {
+
+ /** . */
+ private static final String TYPE = "type";
+
+ /** . */
+ private static final String TO_TYPE = "toType";
+
+ /** . */
+ private static final String TYPE_PREFIX = "typePrefix";
+
+ /** . */
+ private static final String FROM_USER = "fromUser";
+
+ /** . */
+ private static final String TO_USER = "toUser";
+
+ /** . */
+ private static final String USER_PREFIX = "userPrefix";
+
+ private int toType;
+ private String typePrefix;
+ private int fromUser;
+ private int toUser;
+ private String userPrefix;
+
+ @Override
+ public void inject(HashMap params) throws Exception {
+ //
+ String type = params.get(TYPE);
+ if (type == null | type.length() <= 0) {
+ getLog().info("type value is wrong! Please set it exactly with 'category', 'question', or 'answer' value. Aborting injection ...");
+ return;
+ }
+
+ //
+ this.toType = param(params, TO_TYPE);
+ this.typePrefix = params.get(TYPE_PREFIX);
+ this.fromUser = param(params, FROM_USER);
+ this.toUser = param(params, TO_USER);
+ this.userPrefix = params.get(USER_PREFIX);
+
+ //
+ if ("category".equals(type)) {
+ init(userPrefix, typePrefix, null, null, null, 0);
+ injectCategory();
+ } else if ("question".equals(type)) {
+ init(userPrefix, null, typePrefix, null, null, 0);
+ injectQuestion();
+ } else if ("answer".equals(type)) {
+ init(userPrefix, null, null, typePrefix, null, 0);
+ injectAnswer();
+ }
+ }
+
+ private void injectCategory() throws Exception {
+ //
+ String categoryName = categoryBase + toType;
+ Category cat = getCategoryByName(categoryName);
+ if (cat == null) {
+ getLog().info("category name '" + categoryName + "' is wrong. Aborting injection ...");
+ return;
+ }
+
+ //
+ String[] userNames = getUserNames();
+ if (userNames == null | userNames.length <= 0) {
+ getLog().info("Don't assign permission any user to '" + categoryName + "' category. Aborting injection ...");
+ return;
+ }
+
+ //
+ cat = faqService.getCategoryById(cat.getPath().substring(cat.getPath().lastIndexOf("/") + 1));
+ cat.setModerators(userNames);
+ cat.setUserPrivate(userNames);
+
+ //
+ faqService.saveCategory(getCategoryRoot(true).getPath(), cat, false);
+
+ //
+ getLog().info("Assign permission '" + Arrays.toString(userNames) + "' user(s) into '" + categoryName + "' category.");
+ }
+
+ private void injectQuestion() throws Exception {
+ //
+ String questionName = questionBase + toType;
+ Question question = getQuestionByName(questionName);
+ if (question == null) {
+ getLog().info("question name is '" + questionName + "' is wrong. Aborting injection ...");
+ return;
+ }
+
+ //
+ String[] userNames = getUserNames();
+ if (userNames == null | userNames.length <=0) {
+ getLog().info("Don't assign permission any user to '" + questionName + "' question. Aborting injection ...");
+ return;
+ }
+
+ //
+ question = faqService.getQuestionById(question.getPath());
+ question.setUsersVote(userNames);
+
+ //
+ faqService.saveQuestion(question, false, faqSetting);
+
+ //
+ getLog().info("Assign permission '" + Arrays.toString(userNames) + "' user(s) into '" + questionName + "' question in '" + question.getCategoryId() + "' category.");
+ }
+
+ private void injectAnswer() throws Exception {
+ //
+ String aswerName = answerBase + toType;
+ Answer answer = getAnswerByName(aswerName);
+ if (answer == null) {
+ getLog().info("answer name is '" + aswerName + "' is wrong. Aborting injection ...");
+ return;
+ }
+
+ //
+ String[] userNames = getUserNames();
+ if (userNames == null | userNames.length <=0) {
+ getLog().info("Don't assign permission any user to '" + aswerName + "' answer. Aborting injection ...");
+ return;
+ }
+
+ //
+ String questionId = answer.getPath().substring(answer.getPath().indexOf(Utils.CATEGORY_HOME), answer.getPath().indexOf(Utils.ANSWER_HOME) - 1);
+ answer = faqService.getAnswerById(questionId, answer.getId());
+ answer.setUsersVoteAnswer(userNames);
+
+ // Tip and trick for save answer: Set isNew to true and language if null
+ if (answer.getLanguage() == null) {
+ answer.setNew(true);
+ answer.setLanguage("English");
+ }
+ faqService.saveAnswer(questionId, answer, true);
+
+ //
+ getLog().info("Assign permission '" + Arrays.toString(userNames) + "' user(s) into '" + aswerName + "' answer in '" + questionId + "' question.");
+ }
+
+ private String[] getUserNames() throws Exception {
+ //
+ String[] result = new String[toUser - fromUser + 1];
+ int userIdx = 0;
+
+ //
+ for(int i = fromUser; i <= toUser; i++) {
+ String username = userBase + i;
+ if (userHandler.findUserByName(username) != null) {
+ result[userIdx] = username;
+ userIdx++;
+ }
+ }
+
+ //
+ return result;
+ }
}
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/ProfileInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/ProfileInjector.java
index 449970dc55..3ead715208 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/ProfileInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/ProfileInjector.java
@@ -9,7 +9,7 @@ public class ProfileInjector extends AbstractFAQInjector {
/** . */
private static final String NUMBER = "number";
- private static final String PREFIX = "prefix";
+ private static final String PREFIX = "userPrefix";
@Override
public void inject(HashMap params) throws Exception {
diff --git a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/QuestionInjector.java b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/QuestionInjector.java
index e45d3b5eff..c3b12b4e26 100644
--- a/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/QuestionInjector.java
+++ b/extras/injection/src/main/java/org/exoplatform/forum/extras/injection/faq/QuestionInjector.java
@@ -27,13 +27,13 @@ public class QuestionInjector extends AbstractFAQInjector {
@Override
public void inject(HashMap params) throws Exception {
+ //
int number = param(params, NUMBER);
int toCat = param(params, TO_CAT);
String userPrefix = params.get(USER_PREFIX);
String toUser = params.get(TO_USER);
String categoryPrefix = params.get(CATEGORY_PREFIX);
String questionPrefix = params.get(QUESTION_PREFIX);
-
init(userPrefix, categoryPrefix, questionPrefix, null, null, 0);
//
@@ -45,14 +45,18 @@ public void inject(HashMap params) throws Exception {
}
//TODO Need to verify this user whether valid or not.
- String owner = userPrefix + toUser;
+ String owner = userBase + toUser;
+ //
String questionName = null;
+ Question question = null;
for (int i = 0; i < number; i++) {
+ //
questionName = questionName();
-
- Question question = new Question();
+
+ //
+ question = new Question();
question.setAuthor(owner);
question.setCategoryId(cat.getId());
question.setCategoryPath(cat.getPath());
@@ -67,9 +71,11 @@ public void inject(HashMap params) throws Exception {
question.setTopicIdDiscuss("");
question.setUsersWatch(new String[] {""});
+ //
faqService.saveQuestion(question, true, faqSetting);
questionNumber++;
+ //
getLog().info("Question '" + questionName + "' created by " + owner);
}
}
diff --git a/extras/injection/src/test/java/org/exoplatform/forum/extras/injection/InjectorFAQTestCase.java b/extras/injection/src/test/java/org/exoplatform/forum/extras/injection/InjectorFAQTestCase.java
index 893b0adf37..7187b970a7 100644
--- a/extras/injection/src/test/java/org/exoplatform/forum/extras/injection/InjectorFAQTestCase.java
+++ b/extras/injection/src/test/java/org/exoplatform/forum/extras/injection/InjectorFAQTestCase.java
@@ -28,9 +28,9 @@
import org.exoplatform.forum.extras.injection.faq.AttachmentInjector;
import org.exoplatform.forum.extras.injection.faq.CategoryInjector;
import org.exoplatform.forum.extras.injection.faq.CommentInjector;
+import org.exoplatform.forum.extras.injection.faq.MembershipInjector;
import org.exoplatform.forum.extras.injection.faq.ProfileInjector;
import org.exoplatform.forum.extras.injection.faq.QuestionInjector;
-
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.UserHandler;
@@ -51,6 +51,7 @@ public class InjectorFAQTestCase extends BaseTestCase {
private ProfileInjector profileInjector;
private QuestionInjector questionInjector;
private AttachmentInjector attachmentInjector;
+ private MembershipInjector membershipInjector;
private HashMap params;
@@ -70,7 +71,7 @@ public void setUp() throws Exception {
commentInjector = (CommentInjector) getContainer().getComponentInstanceOfType(CommentInjector.class);
questionInjector = (QuestionInjector) getContainer().getComponentInstanceOfType(QuestionInjector.class);
attachmentInjector = (AttachmentInjector) getContainer().getComponentInstanceOfType(AttachmentInjector.class);
-
+ membershipInjector = (MembershipInjector) getContainer().getComponentInstanceOfType(MembershipInjector.class);
//
organizationService = (OrganizationService) getContainer().getComponentInstanceOfType(OrganizationService.class);
@@ -161,6 +162,14 @@ public void testPrefixAttachment() throws Exception {
performAttachmentTest("foo", "far", "bar", "baz", "bee");
}
+ public void testDefaultMembership() throws Exception {
+ performMembershipTest(null, null, null, null);
+ }
+
+ public void testPrefixMembership() throws Exception {
+ performMembershipTest("foo", "far", "bar", "baz");
+ }
+
private void performProfileTest(String prefix) throws Exception {
//
String baseName = (prefix == null ? "bench.user" : prefix);
@@ -169,7 +178,7 @@ private void performProfileTest(String prefix) throws Exception {
//
params.put("number", "5");
if (prefix != null) {
- params.put("prefix", prefix);
+ params.put("userPrefix", prefix);
}
profileInjector.inject(params);
@@ -193,7 +202,7 @@ private void performCategoryTest(String userPrefix, String catPrefix) throws Exc
//
params.put("number", "3");
if (userPrefix != null) {
- params.put("prefix", userPrefix);
+ params.put("userPrefix", userPrefix);
}
//
@@ -203,12 +212,9 @@ private void performCategoryTest(String userPrefix, String catPrefix) throws Exc
assertNotNull(userHandler.findUserByName(userBaseName + "1"));
assertNotNull(userHandler.findUserByName(userBaseName + "2"));
+ //
+ params.clear();
params.put("number", "6");
- params.put("depth", "3");
- if (userPrefix != null) {
- params.put("userPrefix", userPrefix);
- }
-
if (catPrefix != null) {
params.put("catPrefix", catPrefix);
}
@@ -233,7 +239,7 @@ private void performQuestionTest(String userPrefix, String catPrefix, String que
params.put("number", "3");
if (userPrefix != null) {
- params.put("prefix", userPrefix);
+ params.put("userPrefix", userPrefix);
}
profileInjector.inject(params);
@@ -242,12 +248,9 @@ private void performQuestionTest(String userPrefix, String catPrefix, String que
assertNotNull(userHandler.findUserByName(userBaseName + "1"));
assertNotNull(userHandler.findUserByName(userBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
- params.put("depth", "1");
- if (userPrefix != null) {
- params.put("userPrefix", userPrefix);
- }
-
if (catPrefix != null) {
params.put("catPrefix", catPrefix);
}
@@ -258,8 +261,17 @@ private void performQuestionTest(String userPrefix, String catPrefix, String que
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "1"));
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "2"));
+ //
+ params.clear();
params.put("number", "6");
params.put("toCat", "0");
+ params.put("toUser", "0");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
if (quesPrefix != null) {
params.put("quesPrefix", quesPrefix);
}
@@ -284,7 +296,7 @@ private void performAnswerTest(String userPrefix, String catPrefix, String quesP
params.put("number", "3");
if (userPrefix != null) {
- params.put("prefix", userPrefix);
+ params.put("userPrefix", userPrefix);
}
profileInjector.inject(params);
@@ -293,12 +305,9 @@ private void performAnswerTest(String userPrefix, String catPrefix, String quesP
assertNotNull(userHandler.findUserByName(userBaseName + "1"));
assertNotNull(userHandler.findUserByName(userBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
- params.put("depth", "1");
- if (userPrefix != null) {
- params.put("userPrefix", userPrefix);
- }
-
if (catPrefix != null) {
params.put("catPrefix", catPrefix);
}
@@ -309,8 +318,17 @@ private void performAnswerTest(String userPrefix, String catPrefix, String quesP
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "1"));
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("toCat", "0");
+ params.put("toUser", "0");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
if (quesPrefix != null) {
params.put("quesPrefix", quesPrefix);
}
@@ -320,8 +338,13 @@ private void performAnswerTest(String userPrefix, String catPrefix, String quesP
assertNotNull(questionInjector.getQuestionByName(quesBaseName + "1"));
assertNotNull(questionInjector.getQuestionByName(quesBaseName + "2"));
+ //
+ params.clear();
params.put("number", "6");
params.put("toQues", "0");
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
if (answerPrefix != null) {
params.put("answerPrefix", answerPrefix);
}
@@ -347,7 +370,7 @@ private void performCommentTest(String userPrefix, String catPrefix, String ques
params.put("number", "3");
if (userPrefix != null) {
- params.put("prefix", userPrefix);
+ params.put("userPrefix", userPrefix);
}
profileInjector.inject(params);
@@ -356,12 +379,9 @@ private void performCommentTest(String userPrefix, String catPrefix, String ques
assertNotNull(userHandler.findUserByName(userBaseName + "1"));
assertNotNull(userHandler.findUserByName(userBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
- params.put("depth", "1");
- if (userPrefix != null) {
- params.put("userPrefix", userPrefix);
- }
-
if (catPrefix != null) {
params.put("catPrefix", catPrefix);
}
@@ -372,8 +392,17 @@ private void performCommentTest(String userPrefix, String catPrefix, String ques
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "1"));
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("toCat", "0");
+ params.put("toUser", "0");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
if (quesPrefix != null) {
params.put("quesPrefix", quesPrefix);
}
@@ -383,8 +412,13 @@ private void performCommentTest(String userPrefix, String catPrefix, String ques
assertNotNull(questionInjector.getQuestionByName(quesBaseName + "1"));
assertNotNull(questionInjector.getQuestionByName(quesBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("toQues", "0");
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
if (answerPrefix != null) {
params.put("answerPrefix", answerPrefix);
}
@@ -394,8 +428,13 @@ private void performCommentTest(String userPrefix, String catPrefix, String ques
assertNotNull(answerInjector.getAnswerByName(answerBaseName + "1"));
assertNotNull(answerInjector.getAnswerByName(answerBaseName + "2"));
+ //
+ params.clear();
params.put("number", "6");
params.put("toQues", "0");
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
if (commentPrefix != null) {
params.put("commentPrefix", commentPrefix);
}
@@ -421,7 +460,7 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
params.put("number", "3");
if (userPrefix != null) {
- params.put("prefix", userPrefix);
+ params.put("userPrefix", userPrefix);
}
profileInjector.inject(params);
@@ -430,12 +469,9 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
assertNotNull(userHandler.findUserByName(userBaseName + "1"));
assertNotNull(userHandler.findUserByName(userBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
- params.put("depth", "1");
- if (userPrefix != null) {
- params.put("userPrefix", userPrefix);
- }
-
if (catPrefix != null) {
params.put("catPrefix", catPrefix);
}
@@ -446,8 +482,17 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "1"));
assertNotNull(categoryInjector.getCategoryByName(catBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("toCat", "0");
+ params.put("toUser", "0");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
if (quesPrefix != null) {
params.put("quesPrefix", quesPrefix);
}
@@ -457,8 +502,13 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
assertNotNull(questionInjector.getQuestionByName(quesBaseName + "1"));
assertNotNull(questionInjector.getQuestionByName(quesBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("toQues", "0");
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
if (answerPrefix != null) {
params.put("answerPrefix", answerPrefix);
}
@@ -468,8 +518,13 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
assertNotNull(answerInjector.getAnswerByName(answerBaseName + "1"));
assertNotNull(answerInjector.getAnswerByName(answerBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("toQues", "0");
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
if (commentPrefix != null) {
params.put("commentPrefix", commentPrefix);
}
@@ -479,13 +534,16 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
assertNotNull(commentInjector.getCommentByName(commentBaseName + "1"));
assertNotNull(commentInjector.getCommentByName(commentBaseName + "2"));
+ //
+ params.clear();
params.put("number", "3");
params.put("fromQues", "0");
params.put("toQues", "2");
params.put("byteSize", "50");
-
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
attachmentInjector.inject(params);
-
assertEquals(3, attachmentInjector.getQuestionByName(quesBaseName + "0").getAttachMent().size());
assertEquals(3, attachmentInjector.getQuestionByName(quesBaseName + "1").getAttachMent().size());
assertEquals(3, attachmentInjector.getQuestionByName(quesBaseName + "2").getAttachMent().size());
@@ -493,6 +551,131 @@ private void performAttachmentTest(String userPrefix, String catPrefix, String q
cleanProfile(userBaseName, 3);
}
+ private void performMembershipTest(String userPrefix, String catPrefix, String quesPrefix, String answerPrefix) throws Exception {
+ String userBaseName = (userPrefix == null ? "bench.user" : userPrefix);
+ String catBaseName = (catPrefix == null ? "bench.cat" : catPrefix);
+ String quesBaseName = (quesPrefix == null ? "bench.ques" : quesPrefix);
+ String answerBaseName = (answerPrefix == null ? "bench.answer" : answerPrefix);
+ assertClean(userBaseName, catBaseName, quesBaseName);
+
+ params.put("number", "3");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+
+ profileInjector.inject(params);
+
+ assertNotNull(userHandler.findUserByName(userBaseName + "0"));
+ assertNotNull(userHandler.findUserByName(userBaseName + "1"));
+ assertNotNull(userHandler.findUserByName(userBaseName + "2"));
+
+ //
+ params.clear();
+ params.put("number", "3");
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
+
+ categoryInjector.inject(params);
+ assertEquals(3, categoryInjector.categoryNumber(catBaseName));
+ assertNotNull(categoryInjector.getCategoryByName(catBaseName + "0"));
+ assertNotNull(categoryInjector.getCategoryByName(catBaseName + "1"));
+ assertNotNull(categoryInjector.getCategoryByName(catBaseName + "2"));
+
+ //
+ params.clear();
+ params.put("type", "category");
+ params.put("toType", "2");
+ params.put("fromUser", "0");
+ params.put("toUser", "2");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ params.put("typePrefix", catPrefix);
+ }
+ membershipInjector.inject(params);
+ assertEquals(3, categoryInjector.getCategoryByName(catBaseName + "2").getModerators().length);
+ assertEquals(3, categoryInjector.getCategoryByName(catBaseName + "2").getUserPrivate().length);
+
+ //
+ params.clear();
+ params.put("number", "3");
+ params.put("toCat", "0");
+ params.put("toUser", "0");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
+ questionInjector.inject(params);
+ assertEquals(3, questionInjector.questionNumber(quesBaseName));
+ assertNotNull(questionInjector.getQuestionByName(quesBaseName + "0"));
+ assertNotNull(questionInjector.getQuestionByName(quesBaseName + "1"));
+ assertNotNull(questionInjector.getQuestionByName(quesBaseName + "2"));
+
+ //
+ params.clear();
+ params.put("type", "question");
+ params.put("toType", "1");
+ params.put("fromUser", "0");
+ params.put("toUser", "2");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (catPrefix != null) {
+ params.put("catPrefix", catPrefix);
+ }
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ params.put("typePrefix", quesPrefix);
+ }
+ membershipInjector.inject(params);
+ assertEquals(3, questionInjector.getQuestionByName(quesBaseName + "1").getUsersVote().length);
+
+ //
+ params.clear();
+ params.put("number", "3");
+ params.put("toQues", "0");
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
+ if (answerPrefix != null) {
+ params.put("answerPrefix", answerPrefix);
+ }
+ answerInjector.inject(params);
+ assertEquals(3, answerInjector.answerNumber(answerBaseName));
+ assertNotNull(answerInjector.getAnswerByName(answerBaseName + "0"));
+ assertNotNull(answerInjector.getAnswerByName(answerBaseName + "1"));
+ assertNotNull(answerInjector.getAnswerByName(answerBaseName + "2"));
+
+ //
+ params.clear();
+ params.put("type", "answer");
+ params.put("toType", "0");
+ params.put("fromUser", "0");
+ params.put("toUser", "2");
+ if (userPrefix != null) {
+ params.put("userPrefix", userPrefix);
+ }
+ if (quesPrefix != null) {
+ params.put("quesPrefix", quesPrefix);
+ }
+ if (answerPrefix != null) {
+ params.put("answerPrefix", answerPrefix);
+ params.put("typePrefix", answerPrefix);
+ }
+ membershipInjector.inject(params);
+ assertEquals(3, answerInjector.getAnswerByName(answerBaseName + "0").getUsersVoteAnswer().length);
+
+ cleanProfile(userBaseName, 3);
+ }
+
private void assertClean(String userBaseName, String categoryBaseName, String questionBaseName) throws Exception {
if (userBaseName != null) {
assertNull(userHandler.findUserByName(userBaseName + "0"));
diff --git a/extras/injection/src/test/resources/conf/standalone/exo.forum.component.core.test.configuration.xml b/extras/injection/src/test/resources/conf/standalone/exo.forum.component.core.test.configuration.xml
index 967b75a285..b9085c441b 100644
--- a/extras/injection/src/test/resources/conf/standalone/exo.forum.component.core.test.configuration.xml
+++ b/extras/injection/src/test/resources/conf/standalone/exo.forum.component.core.test.configuration.xml
@@ -82,6 +82,9 @@
org.exoplatform.forum.extras.injection.faq.AttachmentInjector
+
+ org.exoplatform.forum.extras.injection.faq.MembershipInjector
+