diff --git a/config/alfresco/model/siteModel.xml b/config/alfresco/model/siteModel.xml
index fc11b7fc0f..1fcb62fa02 100644
--- a/config/alfresco/model/siteModel.xml
+++ b/config/alfresco/model/siteModel.xml
@@ -43,7 +43,9 @@
cm:titled
-
+
+
+
Sites
cm:folder
diff --git a/config/alfresco/site-services-context.xml b/config/alfresco/site-services-context.xml
index 132d8344d1..81485dfe71 100644
--- a/config/alfresco/site-services-context.xml
+++ b/config/alfresco/site-services-context.xml
@@ -21,8 +21,7 @@
-
-
+
diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java
index 25668a59d5..b676894829 100644
--- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java
+++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java
@@ -53,29 +53,30 @@ import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
-import org.alfresco.util.AbstractLifecycleBean;
import org.alfresco.util.ISO9075;
import org.alfresco.util.PropertyMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONException;
import org.json.JSONObject;
-import org.springframework.context.ApplicationEvent;
/**
* Site Service Implementation. Also bootstraps the site AVM and DM stores.
*
* @author Roy Wetherall
*/
-public class SiteServiceImpl extends AbstractLifecycleBean implements SiteService, SiteModel
+public class SiteServiceImpl implements SiteService, SiteModel
{
+ /** Logger */
private static Log logger = LogFactory.getLog(SiteServiceImpl.class);
- public static final String SITE_AVM_STORE = "SiteStore";
- public static final StoreRef SITE_DM_STORE = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SiteStore");
+ /** The DM store where site's are kept */
+ public static final StoreRef SITE_STORE = new StoreRef("workspace://SpacesStore");
+ /** Activiti tool */
private static final String ACTIVITY_TOOL = "siteService";
+ /** Services */
private NodeService nodeService;
private FileFolderService fileFolderService;
private SearchService searchService;
@@ -83,48 +84,80 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
private ActivityService activityService;
private PersonService personService;
private AuthenticationComponent authenticationComponent;
- private RetryingTransactionHelper retryingTransactionHelper;
+ /**
+ * Set node service
+ *
+ * @param nodeService node service
+ */
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
+ /**
+ * Set file folder service
+ *
+ * @param fileFolderService file folder service
+ */
public void setFileFolderService(FileFolderService fileFolderService)
{
this.fileFolderService = fileFolderService;
}
+ /**
+ * Set search service
+ *
+ * @param searchService search service
+ */
public void setSearchService(SearchService searchService)
{
this.searchService = searchService;
}
+ /**
+ * Set permission service
+ *
+ * @param permissionService permission service
+ */
public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
}
+ /**
+ * Set activity service
+ *
+ * @param activityService activity service
+ */
public void setActivityService(ActivityService activityService)
{
this.activityService = activityService;
}
+ /**
+ * Set person service
+ *
+ * @param personService person service
+ */
public void setPersonService(PersonService personService)
{
this.personService = personService;
}
+ /**
+ * Set authentication component
+ *
+ * @param authenticationComponent authententication component
+ */
public void setAuthenticationComponent(AuthenticationComponent authenticationComponent)
{
this.authenticationComponent = authenticationComponent;
}
- public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
- {
- this.retryingTransactionHelper = retryingTransactionHelper;
- }
-
+ /**
+ * @see org.alfresco.repo.site.SiteService#createSite(java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
+ */
public SiteInfo createSite(String sitePreset, String shortName, String title, String description, boolean isPublic)
{
/// TODO check for shortname duplicates
@@ -162,6 +195,12 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
return siteInfo;
}
+ /**
+ * Gets a sites parent folder based on it's short name
+ * ]
+ * @param shortName site short name
+ * @return NodeRef the site's parent
+ */
private NodeRef getSiteParent(String shortName)
{
// TODO
@@ -173,23 +212,19 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
private NodeRef getSiteRoot()
{
// Get the root 'sites' folder
- ResultSet resultSet = this.searchService.query(SITE_DM_STORE, SearchService.LANGUAGE_LUCENE, "PATH:\"cm:sites\"");
+ ResultSet resultSet = this.searchService.query(SITE_STORE, SearchService.LANGUAGE_LUCENE, "TYPE:\"st:sites\"");
if (resultSet.length() == 0)
{
- // TODO
+ // No root site folder exists
throw new AlfrescoRuntimeException("No root sites folder exists");
}
else if (resultSet.length() != 1)
{
- // TODO
+ // More than one root site folder exits
throw new AlfrescoRuntimeException("More than one root sites folder exists");
}
- NodeRef sitesRoot = resultSet.getNodeRef(0);
-
- // TODO
- // In time we will use some sort of algorithm to spread the creation of sites across an arbitary structure
-
- return sitesRoot;
+
+ return resultSet.getNodeRef(0);
}
public List listSites(String nameFilter, String sitePresetFilter)
@@ -266,7 +301,10 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
private NodeRef getSiteNodeRef(String shortName)
{
NodeRef result = null;
- ResultSet resultSet = this.searchService.query(SITE_DM_STORE, SearchService.LANGUAGE_LUCENE, "PATH:\"cm:sites/cm:" + ISO9075.encode(shortName) + "\"");
+
+ //String query = "PATH:\"cm:sites/cm:" + ISO9075.encode(shortName) + "\"";
+ String query = "+TYPE:\"st:site\" +@cm\\:name:\"" + shortName + "\"";
+ ResultSet resultSet = this.searchService.query(SITE_STORE, SearchService.LANGUAGE_LUCENE, query);
if (resultSet.length() == 1)
{
result = resultSet.getNodeRef(0);
@@ -575,76 +613,4 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
return "";
}
}
-
- /**
- * @see org.alfresco.util.AbstractLifecycleBean#onBootstrap(org.springframework.context.ApplicationEvent)
- */
- @Override
- protected void onBootstrap(ApplicationEvent event)
- {
- // Ensure execution occures in a transaction
- this.retryingTransactionHelper.doInTransaction(
- new RetryingTransactionHelper.RetryingTransactionCallback