05-23-2017 07:44 AM
Hi,
I would like to bootstrap the creation of a site through Java code:
SiteInfo siteInfo = siteService.createSite("site-dashboard", "my-site", "Site", "This site", SiteVisibility.PRIVATE);
However, when the bootstrap is executed I get the following error for the creation of the site:
2017-05-23 13:28:48,861 ERROR [admin.patch.PatchExecuter] [main] 04230011 org.alfresco.repo.security.authority.UnknownAuthorityException: 04230010 An authority was not found for System
at org.alfresco.repo.security.authority.AuthorityDAOImpl.addAuthority(AuthorityDAOImpl.java:346)
at org.alfresco.repo.security.authority.AuthorityServiceImpl.addAuthority(AuthorityServiceImpl.java:456)
at org.alfresco.repo.security.authority.AuthorityServiceImpl.addAuthority(AuthorityServiceImpl.java:448)
at org.alfresco.repo.site.SiteServiceImpl$3.doWork(SiteServiceImpl.java:705)
at org.alfresco.repo.site.SiteServiceImpl$3.doWork(SiteServiceImpl.java:1)
at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:548)
at org.alfresco.repo.site.SiteServiceImpl.setupSitePermissions(SiteServiceImpl.java:609)
at org.alfresco.repo.site.SiteServiceImpl.setupSitePermissions(SiteServiceImpl.java:599)
at org.alfresco.repo.site.SiteServiceImpl.createSite(SiteServiceImpl.java:567)
at org.alfresco.repo.site.SiteServiceImpl.createSite(SiteServiceImpl.java:478)
From what I understand from the source code, the code adds the current user "System" as a Site Manager. The code runs that portion of code as "System".
My version of Alfresco is Community Edition 201602.
Any idea how I could make this working?
Thanks in advance,
Philippe
06-06-2017 09:07 AM
I guess the problem is happening because you are not setting an authentication context in your code.
You can see how the addon I shared before does that by looking at the source code here SiteBootstrapAlfresco/SiteLoadBootstrap.java at master · rouxemmanuel/SiteBootstrapAlfresco · GitHub
Notice the run as admin part.
05-24-2017 11:55 AM
Hello.
Can you share a bit more of your code in order to help us understand the problem you are facing?
How are you configuring your bootstrap? The XML would also be useful here.
You can a sample project using the site bootstrap here GitHub - rouxemmanuel/SiteBootstrapAlfresco: Enable site bootstrap in Alfresco not only on Alfresco ...
06-06-2017 05:52 AM
Hi Douglas,
I know this approach, but I prefer to use Java to avoid to have to export the site when I change it, and to have more control on the creation of the site.
These are my bootstrap-context.xml and the associated Java class.
<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- The bootstrap-context.xml file is used for patch definitions, importers
, workflow, and loading custom content models. -->
<bean id="site.creation.patch" class="test.demoamp.SiteCreationPatch" parent="basePatch">
<property name="id"><value>site.creation.patch</value></property>
<property name="description"><value>site.creation.patch.description</value></property>
<property name="fixesFromSchema"><value>0</value></property>
<property name="fixesToSchema"><value>${version.schema}</value></property>
<property name="targetSchema"><value>10000</value></property>
<property name="siteService" ref="siteService" />
</bean></beans>
package test.demoamp;
import org.alfresco.repo.admin.patch.AbstractPatch;
import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.cmr.site.SiteVisibility;
public class SiteCreationPatch extends AbstractPatch {
private SiteService siteService;
public void setSiteService(SiteService siteService) {
this.siteService = siteService;
}
public void createSite() {
SiteInfo siteInfo = siteService.createSite("site-dashboard", "my-site", "My test site", "This is a test site",
SiteVisibility.PRIVATE);
}
protected String applyInternal() throws Exception {
createSite();
return "SiteCreationPatch success";
}
}
Thanks in advance for you help
06-06-2017 09:07 AM
I guess the problem is happening because you are not setting an authentication context in your code.
You can see how the addon I shared before does that by looking at the source code here SiteBootstrapAlfresco/SiteLoadBootstrap.java at master · rouxemmanuel/SiteBootstrapAlfresco · GitHub
Notice the run as admin part.
06-07-2017 07:27 AM
Great! It is working. Thanks a lot.
Explore our Alfresco products with the links below. Use labels to filter content by product module.