You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2013/10/26 14:46:19 UTC
svn commit: r1535983 [2/2] - in /manifoldcf/trunk: ./
connectors/hdfs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/hdfs/
framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/
framework/crawler-ui/src/main...
Modified: manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java (original)
+++ manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java Sat Oct 26 12:46:18 2013
@@ -230,12 +230,14 @@ public class ManifoldCF extends org.apac
}
// Connectors configuration file
+ protected static final String NODE_AUTHORIZATIONDOMAIN = "authorizationdomain";
protected static final String NODE_OUTPUTCONNECTOR = "outputconnector";
protected static final String NODE_MAPPINGCONNECTOR = "mappingconnector";
protected static final String NODE_AUTHORITYCONNECTOR = "authorityconnector";
protected static final String NODE_REPOSITORYCONNECTOR = "repositoryconnector";
protected static final String ATTRIBUTE_NAME = "name";
protected static final String ATTRIBUTE_CLASS = "class";
+ protected static final String ATTRIBUTE_DOMAIN = "domain";
/** Unregister all connectors which don't match a specified connector list.
*/
@@ -249,12 +251,20 @@ public class ManifoldCF extends org.apac
Map<String,String> desiredAuthorityConnectors = new HashMap<String,String>();
Map<String,String> desiredRepositoryConnectors = new HashMap<String,String>();
+ Map<String,String> desiredDomains = new HashMap<String,String>();
+
if (c != null)
{
for (int i = 0; i < c.getChildCount(); i++)
{
ConfigurationNode cn = c.findChild(i);
- if (cn.getType().equals(NODE_OUTPUTCONNECTOR))
+ if (cn.getType().equals(NODE_AUTHORIZATIONDOMAIN))
+ {
+ String domainName = cn.getAttributeValue(ATTRIBUTE_DOMAIN);
+ String name = cn.getAttributeValue(ATTRIBUTE_NAME);
+ desiredDomains.put(domainName,name);
+ }
+ else if (cn.getType().equals(NODE_OUTPUTCONNECTOR))
{
String name = cn.getAttributeValue(ATTRIBUTE_NAME);
String className = cn.getAttributeValue(ATTRIBUTE_CLASS);
@@ -287,6 +297,23 @@ public class ManifoldCF extends org.apac
ManifoldCF.getMasterDatabaseUsername(),
ManifoldCF.getMasterDatabasePassword());
+ // Domains...
+ {
+ IAuthorizationDomainManager mgr = AuthorizationDomainManagerFactory.make(tc);
+ IResultSet domains = mgr.getDomains();
+ for (int i = 0; i < domains.getRowCount(); i++)
+ {
+ IResultRow row = domains.getRow(i);
+ String domainName = (String)row.getValue("domainname");
+ String description = (String)row.getValue("description");
+ if (desiredDomains.get(domainName) == null || !desiredDomains.get(domainName).equals(description))
+ {
+ mgr.unregisterDomain(domainName);
+ }
+ }
+ System.err.println("Successfully unregistered all domains");
+ }
+
// Output connectors...
{
IOutputConnectorManager mgr = OutputConnectorManagerFactory.make(tc);
@@ -430,7 +457,14 @@ public class ManifoldCF extends org.apac
while (i < c.getChildCount())
{
ConfigurationNode cn = c.findChild(i++);
- if (cn.getType().equals(NODE_OUTPUTCONNECTOR))
+ if (cn.getType().equals(NODE_AUTHORIZATIONDOMAIN))
+ {
+ String domainName = cn.getAttributeValue(ATTRIBUTE_DOMAIN);
+ String name = cn.getAttributeValue(ATTRIBUTE_NAME);
+ IAuthorizationDomainManager mgr = AuthorizationDomainManagerFactory.make(tc);
+ mgr.registerDomain(name,domainName);
+ }
+ else if (cn.getType().equals(NODE_OUTPUTCONNECTOR))
{
String name = cn.getAttributeValue(ATTRIBUTE_NAME);
String className = cn.getAttributeValue(ATTRIBUTE_CLASS);
@@ -1084,6 +1118,7 @@ public class ManifoldCF extends org.apac
ManifoldCF.getMasterDatabasePassword());
// Also create the following managers, which will handle the actual details of writing configuration data
IOutputConnectionManager outputManager = OutputConnectionManagerFactory.make(threadContext);
+ IAuthorityGroupManager groupManager = AuthorityGroupManagerFactory.make(threadContext);
IRepositoryConnectionManager connManager = RepositoryConnectionManagerFactory.make(threadContext);
IMappingConnectionManager mappingManager = MappingConnectionManagerFactory.make(threadContext);
IAuthorityConnectionManager authManager = AuthorityConnectionManagerFactory.make(threadContext);
@@ -1147,6 +1182,11 @@ public class ManifoldCF extends org.apac
outputManager.exportConfiguration(zos);
zos.closeEntry();
+ java.util.zip.ZipEntry groupEntry = new java.util.zip.ZipEntry("groups");
+ zos.putNextEntry(groupEntry);
+ groupManager.exportConfiguration(zos);
+ zos.closeEntry();
+
java.util.zip.ZipEntry mappingEntry = new java.util.zip.ZipEntry("mappings");
zos.putNextEntry(mappingEntry);
mappingManager.exportConfiguration(zos);
@@ -1218,6 +1258,7 @@ public class ManifoldCF extends org.apac
ManifoldCF.getMasterDatabasePassword());
// Also create the following managers, which will handle the actual details of reading configuration data
IOutputConnectionManager outputManager = OutputConnectionManagerFactory.make(threadContext);
+ IAuthorityGroupManager groupManager = AuthorityGroupManagerFactory.make(threadContext);
IRepositoryConnectionManager connManager = RepositoryConnectionManagerFactory.make(threadContext);
IMappingConnectionManager mappingManager = MappingConnectionManagerFactory.make(threadContext);
IAuthorityConnectionManager authManager = AuthorityConnectionManagerFactory.make(threadContext);
@@ -1275,6 +1316,8 @@ public class ManifoldCF extends org.apac
String name = z.getName();
if (name.equals("outputs"))
outputManager.importConfiguration(zis);
+ else if (name.equals("groups"))
+ groupManager.importConfiguration(zis);
else if (name.equals("mappings"))
mappingManager.importConfiguration(zis);
else if (name.equals("authorities"))
@@ -1663,6 +1706,8 @@ public class ManifoldCF extends org.apac
protected static final String API_JOBNODE = "job";
protected static final String API_JOBSTATUSNODE = "jobstatus";
+ protected static final String API_AUTHORIZATIONDOMAINNODE = "authorizationdomain";
+ protected static final String API_AUTHORITYGROUPNODE = "authoritygroup";
protected static final String API_REPOSITORYCONNECTORNODE = "repositoryconnector";
protected static final String API_OUTPUTCONNECTORNODE = "outputconnector";
protected static final String API_AUTHORITYCONNECTORNODE = "authorityconnector";
@@ -1684,6 +1729,10 @@ public class ManifoldCF extends org.apac
protected static final String CONNECTORNODE_DESCRIPTION = "description";
protected static final String CONNECTORNODE_CLASSNAME = "class_name";
+ // Authorization domain nodes
+ protected static final String AUTHORIZATIONDOMAINNODE_DESCRIPTION = "description";
+ protected static final String AUTHORIZATIONDOMAINNODE_DOMAINNAME = "domain_name";
+
/** Decode path element.
* Path elements in the API world cannot have "/" characters, or they become impossible to parse. This method undoes
* escaping that prevents "/" from appearing.
@@ -1936,6 +1985,7 @@ public class ManifoldCF extends org.apac
return READRESULT_FOUND;
}
+
/** Read an output connection's info */
protected static int apiReadOutputConnectionInfo(IThreadContext tc, Configuration output, String connectionName, String command)
throws ManifoldCFException
@@ -2112,6 +2162,57 @@ public class ManifoldCF extends org.apac
return READRESULT_FOUND;
}
+ /** Get authority groups */
+ protected static int apiReadAuthorityGroups(IThreadContext tc, Configuration output)
+ throws ManifoldCFException
+ {
+ try
+ {
+ IAuthorityGroupManager groupManager = AuthorityGroupManagerFactory.make(tc);
+ IAuthorityGroup[] groups = groupManager.getAllGroups();
+ int i = 0;
+ while (i < groups.length)
+ {
+ ConfigurationNode groupNode = new ConfigurationNode(API_AUTHORITYGROUPNODE);
+ formatAuthorityGroup(groupNode,groups[i++]);
+ output.addChild(output.getChildCount(),groupNode);
+ }
+ }
+ catch (ManifoldCFException e)
+ {
+ createErrorNode(output,e);
+ }
+ return READRESULT_FOUND;
+ }
+
+ /** Read authority group */
+ protected static int apiReadAuthorityGroup(IThreadContext tc, Configuration output, String groupName)
+ throws ManifoldCFException
+ {
+ try
+ {
+ IAuthorityGroupManager groupManager = AuthorityGroupManagerFactory.make(tc);
+ IAuthorityGroup group = groupManager.load(groupName);
+ if (group != null)
+ {
+ // Fill the return object with job information
+ ConfigurationNode groupNode = new ConfigurationNode(API_AUTHORITYGROUPNODE);
+ formatAuthorityGroup(groupNode,group);
+ output.addChild(output.getChildCount(),groupNode);
+ }
+ else
+ {
+ createErrorNode(output,"Authority group '"+groupName+"' does not exist.");
+ return READRESULT_NOTFOUND;
+ }
+ }
+ catch (ManifoldCFException e)
+ {
+ createErrorNode(output,e);
+ }
+ return READRESULT_FOUND;
+ }
+
/** Get output connections */
protected static int apiReadOutputConnections(IThreadContext tc, Configuration output)
throws ManifoldCFException
@@ -2427,6 +2528,44 @@ public class ManifoldCF extends org.apac
return READRESULT_FOUND;
}
+ /** List authorization domains */
+ protected static int apiReadAuthorizationDomains(IThreadContext tc, Configuration output)
+ throws ManifoldCFException
+ {
+ // List registered authorization domains
+ try
+ {
+ IAuthorizationDomainManager manager = AuthorizationDomainManagerFactory.make(tc);
+ IResultSet resultSet = manager.getDomains();
+ int j = 0;
+ while (j < resultSet.getRowCount())
+ {
+ IResultRow row = resultSet.getRow(j++);
+ ConfigurationNode child = new ConfigurationNode(API_AUTHORIZATIONDOMAINNODE);
+ String description = (String)row.getValue("description");
+ String domainName = (String)row.getValue("domainname");
+ ConfigurationNode node;
+ if (description != null)
+ {
+ node = new ConfigurationNode(AUTHORIZATIONDOMAINNODE_DESCRIPTION);
+ node.setValue(description);
+ child.addChild(child.getChildCount(),node);
+ }
+ node = new ConfigurationNode(AUTHORIZATIONDOMAINNODE_DOMAINNAME);
+ node.setValue(domainName);
+ child.addChild(child.getChildCount(),node);
+
+ output.addChild(output.getChildCount(),child);
+ }
+ }
+ catch (ManifoldCFException e)
+ {
+ createErrorNode(output,e);
+ }
+ return READRESULT_FOUND;
+
+ }
+
/** List repository connectors */
protected static int apiReadRepositoryConnectors(IThreadContext tc, Configuration output)
throws ManifoldCFException
@@ -3208,6 +3347,15 @@ public class ManifoldCF extends org.apac
Long jobID = new Long(path.substring("jobstatusesnocounts/".length()));
return apiReadJobStatusNoCounts(tc,output,jobID);
}
+ else if (path.equals("authoritygroups"))
+ {
+ return apiReadAuthorityGroups(tc,output);
+ }
+ else if (path.startsWith("authoritygroups/"))
+ {
+ String groupName = decodeAPIPathElement(path.substring("authoritygroups/".length()));
+ return apiReadAuthorityGroup(tc,output,groupName);
+ }
else if (path.equals("outputconnections"))
{
return apiReadOutputConnections(tc,output);
@@ -3259,7 +3407,11 @@ public class ManifoldCF extends org.apac
else if (path.equals("repositoryconnectors"))
{
return apiReadRepositoryConnectors(tc,output);
- }
+ }
+ else if (path.equals("authorizationdomains"))
+ {
+ return apiReadAuthorizationDomains(tc,output);
+ }
else
{
createErrorNode(output,"Unrecognized resource.");
@@ -3465,6 +3617,41 @@ public class ManifoldCF extends org.apac
return WRITERESULT_FOUND;
}
+ /** Write authority group.
+ */
+ protected static int apiWriteAuthorityGroup(IThreadContext tc, Configuration output, Configuration input, String groupName)
+ throws ManifoldCFException
+ {
+ ConfigurationNode groupNode = findConfigurationNode(input,API_AUTHORITYGROUPNODE);
+ if (groupNode == null)
+ throw new ManifoldCFException("Input argument must have '"+API_AUTHORITYGROUPNODE+"' field");
+
+ // Turn the configuration node into an AuthorityGroup
+ org.apache.manifoldcf.authorities.authgroups.AuthorityGroup authorityGroup = new org.apache.manifoldcf.authorities.authgroups.AuthorityGroup();
+ processAuthorityGroup(authorityGroup,groupNode);
+
+ if (authorityGroup.getName() == null)
+ authorityGroup.setName(groupName);
+ else
+ {
+ if (!authorityGroup.getName().equals(groupName))
+ throw new ManifoldCFException("Authority group name in path and in object must agree");
+ }
+
+ try
+ {
+ // Save the connection.
+ IAuthorityGroupManager groupManager = AuthorityGroupManagerFactory.make(tc);
+ if (groupManager.save(authorityGroup))
+ return WRITERESULT_CREATED;
+ }
+ catch (ManifoldCFException e)
+ {
+ createErrorNode(output,e);
+ }
+ return WRITERESULT_FOUND;
+ }
+
/** Write output connection.
*/
protected static int apiWriteOutputConnection(IThreadContext tc, Configuration output, Configuration input, String connectionName)
@@ -3672,6 +3859,11 @@ public class ManifoldCF extends org.apac
Long jobID = new Long(path.substring("jobs/".length()));
return apiWriteJob(tc,output,input,jobID);
}
+ else if (path.startsWith("authoritygroups/"))
+ {
+ String groupName = decodeAPIPathElement(path.substring("authoritygroups/".length()));
+ return apiWriteAuthorityGroup(tc,output,input,groupName);
+ }
else if (path.startsWith("outputconnections/"))
{
String connectionName = decodeAPIPathElement(path.substring("outputconnections/".length()));
@@ -3743,6 +3935,23 @@ public class ManifoldCF extends org.apac
return DELETERESULT_FOUND;
}
+ /** Delete authority group.
+ */
+ protected static int apiDeleteAuthorityGroup(IThreadContext tc, Configuration output, String groupName)
+ throws ManifoldCFException
+ {
+ try
+ {
+ IAuthorityGroupManager groupManager = AuthorityGroupManagerFactory.make(tc);
+ groupManager.delete(groupName);
+ }
+ catch (ManifoldCFException e)
+ {
+ createErrorNode(output,e);
+ }
+ return DELETERESULT_FOUND;
+ }
+
/** Delete output connection.
*/
protected static int apiDeleteOutputConnection(IThreadContext tc, Configuration output, String connectionName)
@@ -3808,6 +4017,11 @@ public class ManifoldCF extends org.apac
Long jobID = new Long(path.substring("jobs/".length()));
return apiDeleteJob(tc,output,jobID);
}
+ else if (path.startsWith("authoritygroups/"))
+ {
+ String groupName = decodeAPIPathElement(path.substring("authoritygroups/".length()));
+ return apiDeleteAuthorityGroup(tc,output,groupName);
+ }
else if (path.startsWith("outputconnections/"))
{
String connectionName = decodeAPIPathElement(path.substring("outputconnections/".length()));
@@ -4514,6 +4728,73 @@ public class ManifoldCF extends org.apac
// End of jobstatus API support.
+ // Authority group API
+
+ protected static final String AUTHGROUPNODE_ISNEW = "isnew";
+ protected static final String AUTHGROUPNODE_NAME = "name";
+ protected static final String AUTHGROUPNODE_DESCRIPTION = "description";
+
+ // Output connection API support.
+
+ /** Convert input hierarchy into an AuthorityGroup object.
+ */
+ protected static void processAuthorityGroup(org.apache.manifoldcf.authorities.authgroups.AuthorityGroup group, ConfigurationNode groupNode)
+ throws ManifoldCFException
+ {
+ // Walk through the node's children
+ int i = 0;
+ while (i < groupNode.getChildCount())
+ {
+ ConfigurationNode child = groupNode.findChild(i++);
+ String childType = child.getType();
+ if (childType.equals(AUTHGROUPNODE_ISNEW))
+ {
+ if (child.getValue() == null)
+ throw new ManifoldCFException("Authority group isnew node requires a value");
+ group.setIsNew(child.getValue().equals("true"));
+ }
+ else if (childType.equals(AUTHGROUPNODE_NAME))
+ {
+ if (child.getValue() == null)
+ throw new ManifoldCFException("Authority group name node requires a value");
+ group.setName(child.getValue());
+ }
+ else if (childType.equals(AUTHGROUPNODE_DESCRIPTION))
+ {
+ if (child.getValue() == null)
+ throw new ManifoldCFException("Authority group description node requires a value");
+ group.setDescription(child.getValue());
+ }
+ else
+ throw new ManifoldCFException("Unrecognized authority group field: '"+childType+"'");
+ }
+
+ }
+
+ /** Format an authority group.
+ */
+ protected static void formatAuthorityGroup(ConfigurationNode groupNode, IAuthorityGroup group)
+ {
+ ConfigurationNode child;
+ int j;
+
+ child = new ConfigurationNode(AUTHGROUPNODE_ISNEW);
+ child.setValue(group.getIsNew()?"true":"false");
+ groupNode.addChild(groupNode.getChildCount(),child);
+
+ child = new ConfigurationNode(AUTHGROUPNODE_NAME);
+ child.setValue(group.getName());
+ groupNode.addChild(groupNode.getChildCount(),child);
+
+ if (group.getDescription() != null)
+ {
+ child = new ConfigurationNode(AUTHGROUPNODE_DESCRIPTION);
+ child.setValue(group.getDescription());
+ groupNode.addChild(groupNode.getChildCount(),child);
+ }
+
+ }
+
// Connection API
protected static final String CONNECTIONNODE_ISNEW = "isnew";
@@ -4528,6 +4809,8 @@ public class ManifoldCF extends org.apac
protected static final String CONNECTIONNODE_MATCH = "match";
protected static final String CONNECTIONNODE_MATCHDESCRIPTION = "match_description";
protected static final String CONNECTIONNODE_RATE = "rate";
+ protected static final String CONNECTIONNODE_AUTHDOMAIN = "authdomain";
+ protected static final String CONNECTIONNODE_AUTHGROUP = "authgroup";
// Output connection API support.
@@ -4691,6 +4974,18 @@ public class ManifoldCF extends org.apac
throw new ManifoldCFException("Connection prerequisite node requires a value");
connection.setPrerequisiteMapping(child.getValue());
}
+ else if (childType.equals(CONNECTIONNODE_AUTHDOMAIN))
+ {
+ if (child.getValue() == null)
+ throw new ManifoldCFException("Connection authdomain node requires a value");
+ connection.setAuthDomain(child.getValue());
+ }
+ else if (childType.equals(CONNECTIONNODE_AUTHGROUP))
+ {
+ if (child.getValue() == null)
+ throw new ManifoldCFException("Connection authgroup node requires a value");
+ connection.setAuthGroup(child.getValue());
+ }
else if (childType.equals(CONNECTIONNODE_DESCRIPTION))
{
if (child.getValue() == null)
@@ -4755,6 +5050,17 @@ public class ManifoldCF extends org.apac
connectionNode.addChild(connectionNode.getChildCount(),child);
}
+ if (connection.getAuthDomain() != null)
+ {
+ child = new ConfigurationNode(CONNECTIONNODE_AUTHDOMAIN);
+ child.setValue(connection.getAuthDomain());
+ connectionNode.addChild(connectionNode.getChildCount(),child);
+ }
+
+ child = new ConfigurationNode(CONNECTIONNODE_AUTHGROUP);
+ child.setValue(connection.getAuthGroup());
+ connectionNode.addChild(connectionNode.getChildCount(),child);
+
ConfigParams cp = connection.getConfigParams();
child = new ConfigurationNode(CONNECTIONNODE_CONFIGURATION);
j = 0;
Modified: manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties (original)
+++ manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties Sat Oct 26 12:46:18 2013
@@ -45,10 +45,10 @@ banner.DocumentIngestion=Document Ingest
navigation.LogOut=Log Out
navigation.Outputs=Outputs
navigation.ListOutputConnections=List Output Connections
-navigation.UserMappings=User Mappings
-navigation.ListUserMappings=List User Mapping Connections
navigation.Authorities=Authorities
+navigation.ListUserMappings=List User Mapping Connections
navigation.ListAuthorityConnections=List Authority Connections
+navigation.ListAuthorityGroups=List Authority Groups
navigation.Repositories=Repositories
navigation.ListRepositoryConnections=List Repository Connections
navigation.Jobs=Jobs
@@ -69,6 +69,7 @@ navigation.Listoutputconnections=List ou
navigation.Listrepositoryconnections=List repository connections
navigation.Listusermappings=List user mapping connections
navigation.Listauthorities=List authorities
+navigation.Listauthoritygroups=List authority groups
navigation.Listjobs=List jobs
navigation.Managejobs=Manage jobs
navigation.Documentstatus=Document status
@@ -135,6 +136,17 @@ viewoutput.uninstalled=(uninstalled)
viewoutput.Connectorisnotinstalled=Connector is not installed.
viewoutput.Threwexception=Threw exception:
+listgroups.ApacheManifoldCFListAuthorityGroups=Apache ManifoldCF: List Authority Groups
+listgroups.DeleteAuthorityGroup=Delete authority group
+listgroups.ListOfAuthorityGroups=List of Authority Groups
+listgroups.Name=Name
+listgroups.Description=Description
+listgroups.View=View
+listgroups.Edit=Edit
+listgroups.Delete=Delete
+listgroups.AddNewGroup=Add new authority group
+listgroups.AddaNewGroup=Add a new authority group
+
listauthorities.ApacheManifoldCFListAuthorities=Apache ManifoldCF: List Authorities
listauthorities.ListOfAuthorityConnections=List of Authority Connections
listauthorities.DeleteAuthority=Delete authority
@@ -163,6 +175,19 @@ listmappers.Edit=Edit
listmappers.Delete=Delete
listmappers.uninstalled=(uninstalled)
+editgroup.Name=Name
+editgroup.ApacheManifoldCFEditAuthorityGroup=Apache ManifoldCF: Edit Authority Group
+editgroup.AuthorityGroupMustHaveAName=Authority group must have a name
+editgroup.tab=tab
+editgroup.EditGroup=Edit group
+editgroup.EditAGroup=Edit a group
+editgroup.NameColon=Name:
+editgroup.DescriptionColon=Description:
+editgroup.Save=Save
+editgroup.SaveThisAuthorityGroup=Save this authority group
+editgroup.Cancel=Cancel
+editgroup.CancelAuthorityGroupEditing=Cancel authority group editing
+
editauthority.ApacheManifoldCFEditAuthority=Apache ManifoldCF: Edit Authority
editauthority.EditAnAuthority=Edit an Authority
editauthority.NameColon=Name:
@@ -189,6 +214,12 @@ editauthority.EditAuthorityConnection=Ed
editauthority.Prerequisites=Prerequisites
editauthority.PrerequisiteUserMappingColon=Prerequisite user mapping:
editauthority.NoPrerequisites=(No Prerequisites)
+editauthority.AuthorizationDomainColon=Authorization domain:
+editauthority.AuthorityGroupColon=Authority group:
+editauthority.SelectAGroup=--Select a group--
+editauthority.ConnectionMustHaveAGroup=Authority connection must have a group
+editauthority.NoAuthorityGroupsDefinedCreateOneFirst=No authority groups have been defined; create one first
+editauthority.DefaultDomainNone=Default domain (None)
editmapper.ApacheManifoldCFEditMapping=Apache ManifoldCF: Edit Mapping
editmapper.EditAMapping=Edit A Mapping
@@ -222,7 +253,7 @@ listconnections.ListOfRepositoryConnecti
listconnections.Name=Name
listconnections.Description=Description
listconnections.ConnectionType=Connection Type
-listconnections.Authority=Authority
+listconnections.AuthorityGroup=Authority Group
listconnections.Max=Max
listconnections.AddNewConnection=Add new connection
listconnections.View=View
@@ -235,7 +266,7 @@ listconnections.uninstalled=(uninstalled
editconnection.ApacheManifoldCFEditConnection=Apache ManifoldCF: Edit Connection
editconnection.EditAConnection=Edit a Connection
editconnection.ConnectionTypeColon=Connection type:
-editconnection.AuthorityColon=Authority:
+editconnection.AuthorityGroupColon=Authority group:
editconnection.Cancel=Cancel
editconnection.CancelConnectionEditing=Cancel connection editing
editconnection.NameColon=Name:
@@ -272,7 +303,7 @@ viewconnection.NameColon=Name:
viewconnection.DescriptionColon=Description:
viewconnection.ConnectionTypeColon=Connection type:
viewconnection.MaxConnectionsColon=Max connections:
-viewconnection.AuthorityColon=Authority:
+viewconnection.AuthorityGroupColon=Authority group:
viewconnection.ThrottlingColon=Throttling:
viewconnection.NoThrottles=No throttles
viewconnection.ConnectionStatusColon=Connection status:
@@ -811,6 +842,15 @@ viewjob.JobInvocationColon=Job invocatio
viewjob.Minimal=Minimal
viewjob.Complete=Complete
+viewgroup.ApacheManifoldCFViewGroup=Apache ManifoldCF: View Authority Group
+viewgroup.ViewAuthorityGroup=View Authority Group
+viewgroup.NameColon=Name:
+viewgroup.DescriptionColon=Description:
+viewgroup.EditThisAuthorityGroup=Edit this authority group
+viewgroup.Edit=Edit
+viewgroup.DeleteThisAuthorityGroup=Delete this authority group
+viewgroup.Delete=Delete
+
viewauthority.ViewAuthorityConnectionStatus=View Authority Connection Status
viewauthority.NameColon=Name:
viewauthority.DescriptionColon=Description:
@@ -830,6 +870,8 @@ viewauthority.Threwexception=Threw excep
viewauthority.qmark=?
viewauthority.PrerequisiteUserMappingColon=Prerequisite user mapping:
viewauthority.NoPrerequisites=No prerequisites
+viewauthority.AuthorizationDomainColon=Authorization domain:
+viewauthority.AuthorityGroupColon=Authority group:
viewmapper.ApacheManifoldCFViewMappingConnectionStatus=Apache ManifoldCF: View Mapping Connection Status
viewmapper.DeleteConnection=Delete connection
Modified: manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties (original)
+++ manifoldcf/trunk/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties Sat Oct 26 12:46:18 2013
@@ -45,10 +45,10 @@ banner.DocumentIngestion=ã³ã³ã�
navigation.LogOut=ãã°ã¢ã¦ã
navigation.Outputs=åºå
navigation.ListOutputConnections=åºåã³ãã¯ã·ã§ã³ä¸è¦§
-navigation.UserMappings=ã¦ã¼ã¶ã¼ãããã³ã°
-navigation.ListUserMappings=ã¦ã¼ã¶ã¼ãããã³ã°ã³ãã¯ã·ã§ã³ä¸è¦§
navigation.Authorities=権é
+navigation.ListUserMappings=ã¦ã¼ã¶ã¼ãããã³ã°ã³ãã¯ã·ã§ã³ä¸è¦§
navigation.ListAuthorityConnections=権éã³ãã¯ã·ã§ã³ä¸è¦§
+navigation.ListAuthorityGroups=List Authority Groups
navigation.Repositories=ãªãã¸ããª
navigation.ListRepositoryConnections=ãªãã¸ããªã³ãã¯ã·ã§ã³ä¸è¦§
navigation.Jobs=ã¸ã§ã
@@ -69,6 +69,7 @@ navigation.Listrepositoryconnections=ã�
navigation.Listoutputconnections=åºåã³ãã¯ã·ã§ã³ä¸è¦§
navigation.Listusermappings=ã¦ã¼ã¶ã¼ãããã³ã°ã³ãã¯ã·ã§ã³ä¸è¦§
navigation.Listauthorities=権éä¸è¦§
+navigation.Listauthoritygroups=List authority groups
navigation.Listjobs=ã¸ã§ãä¸è¦§
navigation.Managejobs=ã¸ã§ã管ç
navigation.Documentstatus=ã³ã³ãã³ãã®ç¶æ
@@ -135,6 +136,17 @@ viewoutput.uninstalled=ï¼ã¢ã�
viewoutput.Connectorisnotinstalled=ã³ãã¯ã¿ã¼ãã¤ã³ã¹ãã¼ã«ããã¦ãã¾ãã
viewoutput.Threwexception=ä¾å¤ãã¹ãã¼ããã¾ããï¼
+listgroups.ApacheManifoldCFListAuthorityGroups=Apache ManifoldCF: List Authority Groups
+listgroups.DeleteAuthorityGroup=Delete authority group
+listgroups.ListOfAuthorityGroups=List of Authority Groups
+listgroups.Name=Name
+listgroups.Description=Description
+listgroups.View=View
+listgroups.Edit=Edit
+listgroups.Delete=Delete
+listgroups.AddNewGroup=Add a new group
+listgroups.AddaNewGroup=Add a new group
+
listauthorities.ApacheManifoldCFListAuthorities=Apache ManifoldCFï¼æ¨©éä¸è¦§
listauthorities.ListOfAuthorityConnections=権éã³ãã¯ã·ã§ã³ä¸è¦§
listauthorities.DeleteAuthority=権éãåé¤
@@ -163,6 +175,19 @@ listmappers.Edit=ç·¨é
listmappers.Delete=åé¤
listmappers.uninstalled=ï¼ã¢ã³ã¤ã³ã¹ãã¼ã«ï¼
+editgroup.Name=Name
+editgroup.ApacheManifoldCFEditAuthorityGroup=Apache ManifoldCF: Edit Authority Group
+editgroup.AuthorityGroupMustHaveAName=Authority group must have a name
+editgroup.tab=tab
+editgroup.EditGroup=Edit group
+editgroup.EditAGroup=Edit a group
+editgroup.NameColon=Name:
+editgroup.DescriptionColon=Description:
+editgroup.Save=Save
+editgroup.SaveThisAuthorityGroup=Save this authority group
+editgroup.Cancel=Cancel
+editgroup.CancelAuthorityGroupEditing=Cancel authority group editing
+
editauthority.ApacheManifoldCFEditAuthority=Apache ManifoldCFï¼æ¨©éã®ç·¨é
editauthority.EditAnAuthority=権éãç·¨é
editauthority.NameColon=ååï¼
@@ -189,6 +214,12 @@ editauthority.EditAuthorityConnection=æ
editauthority.Prerequisites=æ¡ä»¶
editauthority.PrerequisiteUserMappingColon=åæã¦ã¼ã¶ã¼ãããã³ã°ï¼
editauthority.NoPrerequisites=ï¼æ¡ä»¶ç¡ãï¼
+editauthority.AuthorizationDomainColon=Authorization domain:
+editauthority.AuthorityGroupColon=Authority group:
+editauthority.SelectAGroup=--Select a group--
+editauthority.ConnectionMustHaveAGroup=Authority connection must have a group
+editauthority.NoAuthorityGroupsDefinedCreateOneFirst=No authority groups have been defined; create one first
+editauthority.DefaultDomainNone=Default domain (None)
editmapper.ApacheManifoldCFEditMapping=Apache ManifoldCFï¼ ãããã³ã°ã®ç·¨é
editmapper.EditAMapping=ãããã³ã°ãç·¨é
@@ -222,7 +253,7 @@ listconnections.ListOfRepositoryConnecti
listconnections.Name=åå
listconnections.Description=説æ
listconnections.ConnectionType=ã³ãã¯ã·ã§ã³ã¿ã¤ã
-listconnections.Authority=権é
+listconnections.AuthorityGroup=Authority Group
listconnections.Max=æå¤§å¤
listconnections.AddNewConnection=æ°ããã³ãã¯ã·ã§ã³ã追å
listconnections.View=表示
@@ -235,7 +266,7 @@ listconnections.uninstalled=ï¼ã¢
editconnection.ApacheManifoldCFEditConnection=Apache ManifoldCFï¼ã³ãã¯ã·ã§ã³ãç·¨é
editconnection.EditAConnection=ã³ãã¯ã·ã§ã³ãç·¨é
editconnection.ConnectionTypeColon=ã³ãã¯ã·ã§ã³ã¿ã¤ãï¼
-editconnection.AuthorityColon=権éï¼
+editconnection.AuthorityGroupColon=Authority group:
editconnection.Cancel=ãã£ã³ã»ã«
editconnection.CancelConnectionEditing=ã³ãã¯ã·ã§ã³ã®ç·¨éããã£ã³ã»ã«
editconnection.NameColon=ååï¼
@@ -272,7 +303,7 @@ viewconnection.NameColon=ååï�
viewconnection.DescriptionColon=説æï¼
viewconnection.ConnectionTypeColon=ã³ãã¯ã·ã§ã³ã¿ã¤ãï¼
viewconnection.MaxConnectionsColon=æå¤§ã³ãã¯ã·ã§ã³æ°ï¼
-viewconnection.AuthorityColon=権éï¼
+viewconnection.AuthorityGroupColon=Authority group:
viewconnection.ThrottlingColon=ã¹ããããªã³ã°ï¼
viewconnection.NoThrottles=ã¹ããããªã³ã°ãªã
viewconnection.ConnectionStatusColon=ã³ãã¯ã·ã§ã³ã®ç¶æ
ï¼
@@ -812,6 +843,15 @@ viewjob.JobInvocationColon=ã¸ã§�
viewjob.Minimal=æå°
viewjob.Complete=å®äº
+viewgroup.ApacheManifoldCFViewGroup=Apache ManifoldCF: View Authority Group
+viewgroup.ViewAuthorityGroup=View Authority Group
+viewgroup.NameColon=Name:
+viewgroup.DescriptionColon=Description:
+viewgroup.EditThisAuthorityGroup=Edit this authority group
+viewgroup.Edit=Edit
+viewgroup.DeleteThisAuthorityGroup=Delete this authority group
+viewgroup.Delete=Delete
+
viewauthority.ViewAuthorityConnectionStatus=権éã³ãã¯ã·ã§ã³ç¶æ
ã®è¡¨ç¤º
viewauthority.NameColon=ååï¼
viewauthority.DescriptionColon=説æï¼
@@ -831,6 +871,8 @@ viewauthority.Threwexception=ä¾å¤�
viewauthority.qmark=ï¼
viewauthority.PrerequisiteUserMappingColon=åæã¦ã¼ã¶ã¼ãããã³ã°ï¼
viewauthority.NoPrerequisites=æ¡ä»¶ç¡ã
+viewauthority.AuthorizationDomainColon=Authorization domain:
+viewauthority.AuthorityGroupColon=Authority group:
viewmapper.ApacheManifoldCFViewMappingConnectionStatus=Apache ManifoldCFï¼ ãããã³ã°ã³ãã¯ã·ã§ã³ç¶æ
ã®è¡¨ç¤º
viewmapper.DeleteConnection=ã³ãã¯ã·ã§ã³ãåé¤
Modified: manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/concepts.xml
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/concepts.xml?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/concepts.xml (original)
+++ manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/concepts.xml Sat Oct 26 12:46:18 2013
@@ -62,18 +62,36 @@
would be an Active Directory SID (e.g. "S-1-23-4-1-45"). But, for example, for documents protected by Livelink a wholly different string would be used.</p>
<p></p>
<p>In the ManifoldCF security model, it is the job of an <em>authority</em> to provide a list of access tokens for a given searching user. Multiple authorities cooperate
- in that each one can add to the list of access tokens describing a given user's security. The resulting access tokens are handed to the search engine as part of every
+ in that each one can add to the list of access tokens describing a given user's security. A user is described in terms of a set of <em>authorization domains</em>
+ and user name tuples. Any given authority will provide access tokens for a user name corresponding to one authorization domain. For example,
+ an authority that understands FaceBook users would only respond to a FaceBook user name. Access tokens from all applicable authorities are added into the final list that is handed to the search engine as part of every
search request, so that the search engine may properly exclude documents that the user is not allowed to see.</p>
<p></p>
<p>When document indexing is done, therefore, it is the job of the crawler to hand access tokens to the search engine, so that it may categorize the documents properly
- according to their accessibility. Note that the access tokens so provided are meaningful only within the space of the governing authority. Access tokens can be provided
- as "grant" tokens, or as "deny" tokens. Finally, there are multiple levels of tokens, which correspond to Active Directory's concepts of "share" security, "directory" security,
- or "file" security. (The latter concepts are rarely used except for documents that come from Windows or Samba systems.)</p>
+ according to their accessibility. The access tokens the crawler attaches to a document are meaningful only within the space of the governing <em>authority group</em>. An
+ authority group describes a set of authorities which all can cooperate to provide access tokens for a single given document. Each authority belongs
+ to exactly one authority group. Authority groups serve to separate access tokens into different spaces so that they cannot interfere with one another.</p>
+ <p></p>
+ <p>For example, say that you would want to crawl documents from a LiveLink repository, as well as from a Windows shared drive.
+ You will therefore have two kinds of documents that are each secured in an entirely different way. There is a LiveLink authority connection, which provides LiveLink
+ access tokens, and there is an Active Directory authority connection, which provides Windows access tokens. Now, you don't want there to be any chance
+ that a LiveLink access token could be confused with an Active Directory SID, so the way you do that in ManifoldCF is to create two distinct
+ authority groups, each of which provides access tokens meant for specific kinds of repository documents. Thus, documents secured by Active
+ Directory SIDs should be indexed against an Active Directory authority group, and documents secured by LiveLink access tokens should have a LiveLink
+ authority group. Finally, the Active Directory authority connection should then belong to the Active Directory authority group, and the LiveLink authority connection should
+ belong to the LiveLink authority group.</p>
+ <p></p>
+ <p>In addition to specifying the correct authority group, access tokens can be attached to documents as "grant" tokens, or as "deny" tokens.
+ "Grant" tokens provide access, "deny" tokens restrict it. "Deny" tokens, if matched, always win over "grant" tokens.
+ And finally, there are multiple levels of tokens, which correspond to Active Directory's concepts
+ of "share" security, specific "directory" security, or "file" security. (The latter concepts are rarely used except for documents that come from
+ Windows or Samba systems.) Each level provided must agree that the document is to be visible for the document to appear in search
+ results.</p>
<p></p>
<p>Once all these documents and their access tokens are handed to the search engine, it is the search engine's job to enforce security by excluding inappropriate documents
from the search results. For Solr and for ElasticSearch, this infrastructure has been included in ManifoldCF releases as a Solr plugin (both 3.x and 4.x varieties) and an
- ElasticSearch plugin. Bear in mind that this plug-in is still not a complete solution, as it requires an authenticated user
- name to be passed to it from some upstream source, possibly a JAAS authenticator within an application server framework.</p>
+ ElasticSearch plugin. Bear in mind that this plug-in is still not a complete solution, as it requires one or more authenticated user
+ names to be passed to it from some upstream source, possibly a JAAS authenticator within an application server framework.</p>
<p></p>
</section>
<section>
@@ -144,6 +162,24 @@
<p>Jobs are allowed to share the same repository connection, and thus they can overlap in the set of documents they describe. ManifoldCF permits this situation, although
when it occurs it is probably an accident.</p>
</section>
+ <section>
+ <title>Authorization domains</title>
+ <p></p>
+ <p>ManifoldCF supports a federated concept of a user. The same user, for instance, may have one login name for FaceBook, another for Windows,
+ and yet another for Google. We can describe this user as having three different authorization domains: "FaceBook", "Windows", and "Google".</p>
+ <p>In ManifoldCF, each authority understands user names or ids from one specific authorization domain. This allows ManifoldCF to be configured
+ so that access tokens generated from multiple independent sources are amalgamated, even if the incoming user names differ from source to
+ source.</p>
+ </section>
+ <section>
+ <title>Authority groups</title>
+ <p></p>
+ <p>ManifoldCF groups authority connections together in groups, so that multiple authorities can furnish security for a single document. An authority
+ group is nothing more than a name and a description that is referenced by authority connections that are part of that group, and is referenced also
+ by repository connections that wish to be secured by that group. For most simple repositories, there is one authority group per authority. But
+ repositories capable of federated security (e.g. SharePoint with Claim Space support) can use multiple authorities to describe security for a single
+ document. Authority groups allow configuration of the appropriate many-to-many relationship for this situation.</p>
+ </section>
</section>
</section>
</body>
Modified: manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/programmatic-operation.xml
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/programmatic-operation.xml?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/programmatic-operation.xml (original)
+++ manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/programmatic-operation.xml Sat Oct 26 12:46:18 2013
@@ -79,10 +79,15 @@
<p></p>
<table>
<tr><th>Resource</th><th>Verb</th><th>What it does</th><th>Input format/query args</th><th>Output format</th></tr>
+ <tr><td>authorizationdomains</td><td>GET</td><td>List all registered authorization domains</td><td>N/A</td><td>{"authorizationdomain":[<em><list_of_authorization_domain_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnectors</td><td>GET</td><td>List all registered output connectors</td><td>N/A</td><td>{"outputconnector":[<em><list_of_output_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>mappingconnectors</td><td>GET</td><td>List all registered mapping connectors</td><td>N/A</td><td>{"mappingconnector":[<em><list_of_mapping_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>authorityconnectors</td><td>GET</td><td>List all registered authority connectors</td><td>N/A</td><td>{"authorityconnector":[<em><list_of_authority_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>repositoryconnectors</td><td>GET</td><td>List all registered repository connectors</td><td>N/A</td><td>{"repositoryconnector":[<em><list_of_repository_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups</td><td>GET</td><td>List all authority groups</td><td>N/A</td><td>{"authoritygroup":[<em><list_of_authority_group_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups/<em><encoded_group_name></em></td><td>GET</td><td>Get a specific authority group</td><td>N/A</td><td>{"authoritygroup":<em><authority_group_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups/<em><encoded_group_name></em></td><td>PUT</td><td>Save or create an authority group</td><td>{"authoritygroup":<em><authority_group_object></em>}</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups/<em><encoded_group_name></em></td><td>DELETE</td><td>Delete an authority group</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnections</td><td>GET</td><td>List all output connections</td><td>N/A</td><td>{"outputconnection":[<em><list_of_output_connection_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnections/<em><encoded_connection_name></em></td><td>GET</td><td>Get a specific output connection</td><td>N/A</td><td>{"outputconnection":<em><output_connection_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnections/<em><encoded_connection_name></em></td><td>PUT</td><td>Save or create an output connection</td><td>{"outputconnection":<em><output_connection_object></em>}</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
@@ -195,6 +200,18 @@
</table>
</section>
<section>
+ <title>Authorization domain objects</title>
+ <p></p>
+ <p>The JSON fields an authorization domain object has are as follows:</p>
+ <p></p>
+ <table>
+ <tr><th>Field</th><th>Meaning</th></tr>
+ <tr><td>"description"</td><td>The optional description of the authorization domain</td></tr>
+ <tr><td>"domain_name"</td><td>The internal name of the authorization domain, i.e. what is sent to the Authority Service</td></tr>
+ </table>
+ <p></p>
+ </section>
+ <section>
<title>Output connector objects</title>
<p></p>
<p>The JSON fields an output connector object has are as follows:</p>
@@ -243,6 +260,26 @@
<p></p>
</section>
<section>
+ <title>Authority group objects</title>
+ <p></p>
+ <p>Authority group names, when they are part of a URL, should be encoded as follows:</p>
+ <p></p>
+ <ol>
+ <li>All instances of '.' should be replaced by '..'.</li>
+ <li>All instances of '/' should be replaced by '.+'.</li>
+ <li>The URL should be encoded using standard URL utf-8-based %-encoding.</li>
+ </ol>
+ <p></p>
+ <p>The JSON fields an authority group object has are as follows:</p>
+ <p></p>
+ <table>
+ <tr><th>Field</th><th>Meaning</th></tr>
+ <tr><td>"name"</td><td>The unique name of the group</td></tr>
+ <tr><td>"description"</td><td>The description of the group</td></tr>
+ </table>
+ <p></p>
+ </section>
+ <section>
<title>Output connection objects</title>
<p></p>
<p>Output connection names, when they are part of a URL, should be encoded as follows:</p>
@@ -310,6 +347,8 @@
<tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
<tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
<tr><td>"prerequisite"</td><td>The mapping connection prerequisite, if any</td></tr>
+ <tr><td>"authdomain"</td><td>The authorization domain for the authority connection, if any</td></tr>
+ <tr><td>"authgroup"</td><td>The required authority group for the authority connection</td></tr>
</table>
<p></p>
</section>
@@ -333,7 +372,7 @@
<tr><td>"class_name"</td><td>The java class name of the class implementing the connection</td></tr>
<tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
<tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
- <tr><td>"acl_authority"</td><td>The (optional) name of the authority that will enforce security for this connection</td></tr>
+ <tr><td>"acl_authority"</td><td>The (optional) name of the authority group that will enforce security for this connection</td></tr>
<tr><td>"throttle"</td><td>An array of throttle objects, which control how quickly documents can be requested from this connection</td></tr>
</table>
<p></p>
Modified: manifoldcf/trunk/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml (original)
+++ manifoldcf/trunk/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml Sat Oct 26 12:46:18 2013
@@ -79,10 +79,15 @@
<p></p>
<table>
<tr><th>Resource</th><th>Verb</th><th>What it does</th><th>Input format/query args</th><th>Output format</th></tr>
+ <tr><td>authorizationdomains</td><td>GET</td><td>List all registered authorization domains</td><td>N/A</td><td>{"authorizationdomain":[<em><list_of_authorization_domain_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnectors</td><td>GET</td><td>List all registered output connectors</td><td>N/A</td><td>{"outputconnector":[<em><list_of_output_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>mappingconnectors</td><td>GET</td><td>List all registered mapping connectors</td><td>N/A</td><td>{"mappingconnector":[<em><list_of_mapping_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>authorityconnectors</td><td>GET</td><td>List all registered authority connectors</td><td>N/A</td><td>{"authorityconnector":[<em><list_of_authority_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>repositoryconnectors</td><td>GET</td><td>List all registered repository connectors</td><td>N/A</td><td>{"repositoryconnector":[<em><list_of_repository_connector_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups</td><td>GET</td><td>List all authority groups</td><td>N/A</td><td>{"authoritygroup":[<em><list_of_authority_group_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups/<em><encoded_group_name></em></td><td>GET</td><td>Get a specific authority group</td><td>N/A</td><td>{"authoritygroup":<em><authority_group_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups/<em><encoded_group_name></em></td><td>PUT</td><td>Save or create an authority group</td><td>{"authoritygroup":<em><authority_group_object></em>}</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>authoritygroups/<em><encoded_group_name></em></td><td>DELETE</td><td>Delete an authority group</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnections</td><td>GET</td><td>List all output connections</td><td>N/A</td><td>{"outputconnection":[<em><list_of_output_connection_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnections/<em><encoded_connection_name></em></td><td>GET</td><td>Get a specific output connection</td><td>N/A</td><td>{"outputconnection":<em><output_connection_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>outputconnections/<em><encoded_connection_name></em></td><td>PUT</td><td>Save or create an output connection</td><td>{"outputconnection":<em><output_connection_object></em>}</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
@@ -111,8 +116,9 @@
<tr><td>jobs/<em><job_id></em></td><td>GET</td><td>Get a specific job definition</td><td>N/A</td><td>{"job":<em><job_object_></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>jobs/<em><job_id></em></td><td>PUT</td><td>Save a job definition</td><td>{"job":<em><job_object></em>}</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>jobs/<em><job_id></em></td><td>DELETE</td><td>Delete a job definition</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
- <tr><td>jobstatuses</td><td>GET</td><td>List all jobs and their status</td><td>N/A</td><td>{"jobstatus":[<em><list_of_job_status_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
- <tr><td>jobstatuses/<em><job_id></em></td><td>GET</td><td>Get a specific job's status</td><td>N/A</td><td>{"jobstatus":<em><job_status_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>} </td></tr>
+ <tr><td>jobstatuses</td><td>GET</td><td>List all jobs and their status</td><td>maxcount=<maximum_documents_to_count></td><td>{"jobstatus":[<em><list_of_job_status_objects></em>]} <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
+ <tr><td>jobstatuses/<em><job_id></em></td><td>GET</td><td>Get a specific job's status</td><td>maxcount=<maximum_documents_to_count></td><td>{"jobstatus":<em><job_status_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>} </td></tr>
+ <tr><td>jobstatusesnocounts<em><job_id></em></td><td>GET</td><td>List all jobs and their status, returning '0' for all counts</td><td>N/A</td><td>{"jobstatus":[<em><list_of_job_status_objects></em>]} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>} </td></tr>
<tr><td>jobstatusesnocounts/<em><job_id></em></td><td>GET</td><td>Get a specific job's status, returning '0' for all counts</td><td>N/A</td><td>{"jobstatus":<em><job_status_object></em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em><error_text></em>} </td></tr>
<tr><td>start/<em><job_id></em></td><td>PUT</td><td>Start a specified job manually</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
<tr><td>startminimal/<em><job_id></em></td><td>PUT</td><td>Start a specified job manually, minimal run requested</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em><error_text></em>}</td></tr>
@@ -194,6 +200,18 @@
</table>
</section>
<section>
+ <title>Authorization domain objects</title>
+ <p></p>
+ <p>The JSON fields an authorization domain object has are as follows:</p>
+ <p></p>
+ <table>
+ <tr><th>Field</th><th>Meaning</th></tr>
+ <tr><td>"description"</td><td>The optional description of the authorization domain</td></tr>
+ <tr><td>"domain_name"</td><td>The internal name of the authorization domain, i.e. what is sent to the Authority Service</td></tr>
+ </table>
+ <p></p>
+ </section>
+ <section>
<title>Output connector objects</title>
<p></p>
<p>The JSON fields an output connector object has are as follows:</p>
@@ -242,6 +260,26 @@
<p></p>
</section>
<section>
+ <title>Authority group objects</title>
+ <p></p>
+ <p>Authority group names, when they are part of a URL, should be encoded as follows:</p>
+ <p></p>
+ <ol>
+ <li>All instances of '.' should be replaced by '..'.</li>
+ <li>All instances of '/' should be replaced by '.+'.</li>
+ <li>The URL should be encoded using standard URL utf-8-based %-encoding.</li>
+ </ol>
+ <p></p>
+ <p>The JSON fields an authority group object has are as follows:</p>
+ <p></p>
+ <table>
+ <tr><th>Field</th><th>Meaning</th></tr>
+ <tr><td>"name"</td><td>The unique name of the group</td></tr>
+ <tr><td>"description"</td><td>The description of the group</td></tr>
+ </table>
+ <p></p>
+ </section>
+ <section>
<title>Output connection objects</title>
<p></p>
<p>Output connection names, when they are part of a URL, should be encoded as follows:</p>
@@ -309,6 +347,8 @@
<tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
<tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
<tr><td>"prerequisite"</td><td>The mapping connection prerequisite, if any</td></tr>
+ <tr><td>"authdomain"</td><td>The authorization domain for the authority connection, if any</td></tr>
+ <tr><td>"authgroup"</td><td>The required authority group for the authority connection</td></tr>
</table>
<p></p>
</section>
@@ -332,7 +372,7 @@
<tr><td>"class_name"</td><td>The java class name of the class implementing the connection</td></tr>
<tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
<tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
- <tr><td>"acl_authority"</td><td>The (optional) name of the authority that will enforce security for this connection</td></tr>
+ <tr><td>"acl_authority"</td><td>The (optional) name of the authority group that will enforce security for this connection</td></tr>
<tr><td>"throttle"</td><td>An array of throttle objects, which control how quickly documents can be requested from this connection</td></tr>
</table>
<p></p>
Modified: manifoldcf/trunk/tests/activedirectory/src/test/java/org/apache/manifoldcf/activedirectory_tests/NavigationDerbyUI.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/tests/activedirectory/src/test/java/org/apache/manifoldcf/activedirectory_tests/NavigationDerbyUI.java?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/tests/activedirectory/src/test/java/org/apache/manifoldcf/activedirectory_tests/NavigationDerbyUI.java (original)
+++ manifoldcf/trunk/tests/activedirectory/src/test/java/org/apache/manifoldcf/activedirectory_tests/NavigationDerbyUI.java Sat Oct 26 12:46:18 2013
@@ -61,6 +61,19 @@ public class NavigationDerbyUI extends B
// Define an authority connection via the UI
window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("List authority groups"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("Add new authority group"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ form = window.findForm(testerInstance.createStringDescription("editgroup"));
+ textarea = form.findTextarea(testerInstance.createStringDescription("groupname"));
+ textarea.setValue(testerInstance.createStringDescription("MyAuthorityConnection"));
+ button = window.findButton(testerInstance.createStringDescription("Save this authority group"));
+ button.click();
+
+ window = testerInstance.findWindow(null);
link = window.findLink(testerInstance.createStringDescription("List authorities"));
link.click();
window = testerInstance.findWindow(null);
@@ -78,6 +91,8 @@ public class NavigationDerbyUI extends B
form = window.findForm(testerInstance.createStringDescription("editconnection"));
selectbox = form.findSelectbox(testerInstance.createStringDescription("classname"));
selectbox.selectValue(testerInstance.createStringDescription("org.apache.manifoldcf.authorities.authorities.activedirectory.ActiveDirectoryAuthority"));
+ selectbox = form.findSelectbox(testerInstance.createStringDescription("authoritygroup"));
+ selectbox.selectValue(testerInstance.createStringDescription("MyAuthorityConnection"));
button = window.findButton(testerInstance.createStringDescription("Continue to next page"));
button.click();
// Server tab
Modified: manifoldcf/trunk/tests/cmis/src/test/java/org/apache/manifoldcf/cmis_tests/NavigationDerbyUI.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/tests/cmis/src/test/java/org/apache/manifoldcf/cmis_tests/NavigationDerbyUI.java?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/tests/cmis/src/test/java/org/apache/manifoldcf/cmis_tests/NavigationDerbyUI.java (original)
+++ manifoldcf/trunk/tests/cmis/src/test/java/org/apache/manifoldcf/cmis_tests/NavigationDerbyUI.java Sat Oct 26 12:46:18 2013
@@ -132,6 +132,19 @@ public class NavigationDerbyUI extends B
// Define an authority connection via the UI
window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("List authority groups"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("Add new authority group"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ form = window.findForm(testerInstance.createStringDescription("editgroup"));
+ textarea = form.findTextarea(testerInstance.createStringDescription("groupname"));
+ textarea.setValue(testerInstance.createStringDescription("MyAuthorityConnection"));
+ button = window.findButton(testerInstance.createStringDescription("Save this authority group"));
+ button.click();
+
+ window = testerInstance.findWindow(null);
link = window.findLink(testerInstance.createStringDescription("List authorities"));
link.click();
window = testerInstance.findWindow(null);
@@ -149,6 +162,8 @@ public class NavigationDerbyUI extends B
form = window.findForm(testerInstance.createStringDescription("editconnection"));
selectbox = form.findSelectbox(testerInstance.createStringDescription("classname"));
selectbox.selectValue(testerInstance.createStringDescription("org.apache.manifoldcf.crawler.connectors.cmis.CmisAuthorityConnector"));
+ selectbox = form.findSelectbox(testerInstance.createStringDescription("authoritygroup"));
+ selectbox.selectValue(testerInstance.createStringDescription("MyAuthorityConnection"));
button = window.findButton(testerInstance.createStringDescription("Continue to next page"));
button.click();
window = testerInstance.findWindow(null);
Modified: manifoldcf/trunk/tests/jdbc/src/test/java/org/apache/manifoldcf/jdbc_tests/NavigationDerbyUI.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/tests/jdbc/src/test/java/org/apache/manifoldcf/jdbc_tests/NavigationDerbyUI.java?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/tests/jdbc/src/test/java/org/apache/manifoldcf/jdbc_tests/NavigationDerbyUI.java (original)
+++ manifoldcf/trunk/tests/jdbc/src/test/java/org/apache/manifoldcf/jdbc_tests/NavigationDerbyUI.java Sat Oct 26 12:46:18 2013
@@ -222,6 +222,18 @@ public class NavigationDerbyUI extends B
// Define an authority connection via the UI
window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("List authority groups"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("Add new authority group"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ form = window.findForm(testerInstance.createStringDescription("editgroup"));
+ textarea = form.findTextarea(testerInstance.createStringDescription("groupname"));
+ textarea.setValue(testerInstance.createStringDescription("MyAuthorityConnection"));
+ button = window.findButton(testerInstance.createStringDescription("Save this authority group"));
+ button.click();
+ window = testerInstance.findWindow(null);
link = window.findLink(testerInstance.createStringDescription("List authorities"));
link.click();
window = testerInstance.findWindow(null);
@@ -239,6 +251,8 @@ public class NavigationDerbyUI extends B
form = window.findForm(testerInstance.createStringDescription("editconnection"));
selectbox = form.findSelectbox(testerInstance.createStringDescription("classname"));
selectbox.selectValue(testerInstance.createStringDescription("org.apache.manifoldcf.authorities.authorities.jdbc.JDBCAuthority"));
+ selectbox = form.findSelectbox(testerInstance.createStringDescription("authoritygroup"));
+ selectbox.selectValue(testerInstance.createStringDescription("MyAuthorityConnection"));
button = window.findButton(testerInstance.createStringDescription("Continue to next page"));
button.click();
// Credentials tab
Modified: manifoldcf/trunk/tests/ldap/src/test/java/org/apache/manifoldcf/ldap_tests/NavigationDerbyUI.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/tests/ldap/src/test/java/org/apache/manifoldcf/ldap_tests/NavigationDerbyUI.java?rev=1535983&r1=1535982&r2=1535983&view=diff
==============================================================================
--- manifoldcf/trunk/tests/ldap/src/test/java/org/apache/manifoldcf/ldap_tests/NavigationDerbyUI.java (original)
+++ manifoldcf/trunk/tests/ldap/src/test/java/org/apache/manifoldcf/ldap_tests/NavigationDerbyUI.java Sat Oct 26 12:46:18 2013
@@ -62,6 +62,19 @@ public class NavigationDerbyUI extends B
// Define an authority connection via the UI
window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("List authority groups"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ link = window.findLink(testerInstance.createStringDescription("Add new authority group"));
+ link.click();
+ window = testerInstance.findWindow(null);
+ form = window.findForm(testerInstance.createStringDescription("editgroup"));
+ textarea = form.findTextarea(testerInstance.createStringDescription("groupname"));
+ textarea.setValue(testerInstance.createStringDescription("MyAuthorityConnection"));
+ button = window.findButton(testerInstance.createStringDescription("Save this authority group"));
+ button.click();
+
+ window = testerInstance.findWindow(null);
link = window.findLink(testerInstance.createStringDescription("List authorities"));
link.click();
window = testerInstance.findWindow(null);
@@ -79,6 +92,8 @@ public class NavigationDerbyUI extends B
form = window.findForm(testerInstance.createStringDescription("editconnection"));
selectbox = form.findSelectbox(testerInstance.createStringDescription("classname"));
selectbox.selectValue(testerInstance.createStringDescription("org.apache.manifoldcf.authorities.authorities.ldap.LDAPAuthority"));
+ selectbox = form.findSelectbox(testerInstance.createStringDescription("authoritygroup"));
+ selectbox.selectValue(testerInstance.createStringDescription("MyAuthorityConnection"));
button = window.findButton(testerInstance.createStringDescription("Continue to next page"));
button.click();
// Server tab