Author: mfranklin
Date: Wed Feb 27 23:26:28 2013
New Revision: 1451031
URL: http://svn.apache.org/r1451031
Log:
Added MongoDB impl for Activities RAVE-880
Added:
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
Modified:
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
Modified:
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java?rev=1451031&r1=1451030&r2=1451031&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
(original)
+++
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
Wed Feb 27 23:26:28 2013
@@ -22,8 +22,10 @@ package org.apache.rave.portal.model.con
import com.google.common.collect.Lists;
import org.apache.rave.portal.model.MongoDbPersonAssociation;
import org.apache.rave.portal.model.MongoDbUser;
+import org.apache.rave.portal.model.PersonProperty;
import org.apache.rave.portal.model.User;
import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.model.impl.PersonPropertyImpl;
import org.apache.rave.portal.repository.PageLayoutRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
@@ -92,7 +94,7 @@ public class MongoDbUserConverter implem
converted.setStatus(source.getStatus());
converted.setAddresses(source.getAddresses());
converted.setOrganizations(source.getOrganizations());
- converted.setProperties(source.getProperties());
+ converted.setProperties(convert(source.getProperties()));
converted.setPassword(source.getPassword());
converted.setConfirmPassword(source.getConfirmPassword());
converted.setDefaultPageLayoutCode(getPageLayoutCode(source));
@@ -105,6 +107,27 @@ public class MongoDbUserConverter implem
converted.setPageLayoutRepository(null);
}
+ private List<PersonProperty> convert(List<PersonProperty> sources) {
+ if(sources != null) {
+ List<PersonProperty> converted = Lists.newArrayList();
+ for(PersonProperty source : sources) {
+ converted.add(convert(source));
+ }
+ return converted;
+ }
+ return null;
+ }
+
+ private PersonProperty convert(PersonProperty source) {
+ PersonProperty converted = new PersonPropertyImpl();
+ converted.setType(source.getType());
+ converted.setValue(source.getValue());
+ converted.setExtendedValue(source.getExtendedValue());
+ converted.setQualifier(source.getQualifier());
+ converted.setPrimary(source.getPrimary());
+ return converted;
+ }
+
private String getPageLayoutCode(User source) {
String code = null;
if (source.getDefaultPageLayout() == null) {
Modified:
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java?rev=1451031&r1=1451030&r2=1451031&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
(original)
+++
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
Wed Feb 27 23:26:28 2013
@@ -19,50 +19,71 @@
package org.apache.rave.portal.repository.impl;
-import org.apache.commons.lang.NotImplementedException;
import org.apache.rave.portal.model.ActivityStreamsEntry;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
import org.apache.rave.portal.repository.ActivityStreamsRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.stereotype.Repository;
import java.util.List;
+import static
org.apache.rave.portal.repository.util.CollectionNames.ACTIVITIES;
+import static org.apache.rave.util.CollectionUtils.toBaseTypedList;
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
+
/**
* Placeholder repository
*/
@Repository
public class MongoDbActivityStreamsRepository implements
ActivityStreamsRepository {
+ private static final Class<? extends ActivityStreamsEntry> CLASS =
ActivityStreamsEntryImpl.class;
+
+ private final MongoOperations template;
+ private final HydratingConverterFactory converter;
+
+ @Autowired
+ public MongoDbActivityStreamsRepository(MongoOperations template,
HydratingConverterFactory converter) {
+ this.template = template;
+ this.converter = converter;
+ }
+
@Override
public List<ActivityStreamsEntry> getAll() {
- throw new NotImplementedException();
+ return toBaseTypedList(template.findAll(CLASS, ACTIVITIES));
}
@Override
public List<ActivityStreamsEntry> getByUserId(String id) {
- throw new NotImplementedException();
+ return
toBaseTypedList(template.find(query(where("actor._id").is(id)),CLASS,
ACTIVITIES));
}
@Override
public void deleteById(String id) {
- throw new NotImplementedException();
+ template.remove(query(where("_id").is(id)), ACTIVITIES);
}
@Override
public Class<? extends ActivityStreamsEntry> getType() {
- return ActivityStreamsEntry.class;
+ return CLASS;
}
@Override
public ActivityStreamsEntry get(String id) {
- throw new NotImplementedException();
+ return template.findById(id, CLASS, ACTIVITIES);
}
@Override
public ActivityStreamsEntry save(ActivityStreamsEntry item) {
- throw new NotImplementedException();
+ ActivityStreamsEntryImpl converted = converter.convert(item,
ActivityStreamsEntry.class);
+ template.save(converted, ACTIVITIES);
+ return converted;
}
@Override
public void delete(ActivityStreamsEntry item) {
- throw new NotImplementedException();
+ if(item != null) deleteById(item.getId());
}
}
Modified:
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java?rev=1451031&r1=1451030&r2=1451031&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
(original)
+++
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
Wed Feb 27 23:26:28 2013
@@ -39,4 +39,5 @@ public class CollectionNames {
public static final String WIDGET_RATINGS = "rating_statistics";
public static final String WIDGET_USERS = "user_statistics";
public static final String OPERATIONS = "ops";
+ public static final String ACTIVITIES = "activities";
}
Added:
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java?rev=1451031&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
(added)
+++
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
Wed Feb 27 23:26:28 2013
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.repository.impl;
+
+
+import com.google.common.collect.Lists;
+import org.apache.rave.portal.model.ActivityStreamsEntry;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
+import org.apache.rave.portal.repository.ActivityStreamsRepository;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.List;
+
+import static
org.apache.rave.portal.repository.util.CollectionNames.ACTIVITIES;
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.sameInstance;
+import static org.junit.Assert.assertThat;
+
+public class MongoDbActivityStreamsRepositoryTest {
+ public static final String ID = "1";
+ private MongoOperations template;
+ private HydratingConverterFactory factory;
+ private ActivityStreamsRepository repository;
+
+ @Before
+ public void setup() {
+ factory = createMock(HydratingConverterFactory.class);
+ template = createMock(MongoOperations.class);
+ repository = new MongoDbActivityStreamsRepository(template, factory);
+ }
+
+ @Test
+ public void getAll() {
+ List<ActivityStreamsEntryImpl> result = Lists.newArrayList();
+ expect(template.findAll(eq(ActivityStreamsEntryImpl.class),
eq(ACTIVITIES))).andReturn(result);
+ replay(template);
+
+ List<ActivityStreamsEntry> entries = repository.getAll();
+ assertThat((Object)entries, is(sameInstance((Object)result)));
+ }
+
+ @Test
+ public void getByUserId() {
+ List<ActivityStreamsEntryImpl> result = Lists.newArrayList();
+ expect(template.find(Query.query(Criteria.where("actor._id").is(ID)),
ActivityStreamsEntryImpl.class, ACTIVITIES)).andReturn(result);
+ replay(template);
+
+ List<ActivityStreamsEntry> entries = repository.getByUserId(ID);
+ assertThat((Object)entries, is(sameInstance((Object)result)));
+ }
+
+ @Test
+ public void deleteByUserId() {
+ template.remove(Query.query(Criteria.where("_id").is(ID)), ACTIVITIES);
+ expectLastCall();
+ replay(template);
+
+ repository.deleteById(ID);
+ verify(template);
+ }
+
+ @Test
+ public void delete() {
+ ActivityStreamsEntryImpl entry = new ActivityStreamsEntryImpl();
+ entry.setId(ID);
+ template.remove(Query.query(Criteria.where("_id").is(ID)), ACTIVITIES);
+ expectLastCall();
+ replay(template);
+ repository.delete(entry);
+ verify(template);
+ }
+
+ @Test
+ public void delete_null() {
+ replay(template);
+ repository.delete(null);
+ verify(template);
+ }
+
+ @Test
+ public void getById() {
+ ActivityStreamsEntryImpl entry = new ActivityStreamsEntryImpl();
+ entry.setId(ID);
+ expect(template.findById(ID, ActivityStreamsEntryImpl.class,
ACTIVITIES)).andReturn(entry);
+ replay(template);
+
+ ActivityStreamsEntry result = repository.get(ID);
+ assertThat(result, is(sameInstance((ActivityStreamsEntry)entry)));
+ }
+
+ @Test
+ public void save() {
+ ActivityStreamsEntry original = new ActivityStreamsEntryImpl();
+ ActivityStreamsEntry converted = new ActivityStreamsEntryImpl();
+ expect(factory.convert(original,
ActivityStreamsEntry.class)).andReturn(converted);
+ template.save(converted, ACTIVITIES);
+ expectLastCall();
+ replay(factory, template);
+
+ ActivityStreamsEntry result = repository.save(original);
+ assertThat(result, is(sameInstance(converted)));
+ verify(factory, template);
+ }
+}