Código de amostra para obter grupos aninhados

Use o fragmento de código de amostra e os gráficos de dados para obter grupos aninhados usando o método get() e GroupMembershipControl.

O fragmento de código de amostra e os gráficos de dados incluem as seguintes etapas:

  1. Crie dois grupos.
  2. Crie um usuário.
  3. Inclua o usuário como membro de um dos novos grupos.
  4. Inclua o grupo como membro do outro novo grupo.
  5. Obtenha a associação ao grupo do usuário usando o método get() e GroupMembershipControl.

Pré-requisito

Assegure-se de ter lido as informações e concluído as etapas descritas no tópico Pré-requisitos de Programação.

Você deve ter a configuração necessária para recuperar e gerenciar grupos aninhados. Para obter informações sobre essas definições de configuração, consulte os seguintes tópicos:

Código de Amostra

Inclua o seguinte fragmento de código no código do aplicativo e substitua as variáveis pelos valores reais que você deseja usar.

/**
 *  testNestedGroupsSnippet 
 *  Este teste faz o seguinte:
 *  Cria dois grupos
 *  Cria um usuário
 *  Inclui o usuário no group1
 *  Inclui group1 como membro do group2
 *  Obtém a associação do usuário
 */
public static void testNestedGroupsSnippet()
{
    // Criar dois grupos
    addGroup("group1");
    addGroup("group2");
    // Incluir um usuário 
    addPersonAccount("user1","user1cn","user1sn");
    // Incluir o membro user1 no grupo group1
    addMemberToGroup(user1Dn,group1Dn);
    // Incluir group1 como membro do group2
    addMemberToGroup(group1Dn,group2Dn);
    // Obter a participação do usuário do membro user1 para verificar se ele é membro dos grupos 1 e 2
    getGroupMembership(user1Dn);
}

/**
 *  addGroup Inclui uma entidade do tipo Group
 *  @param cn valor a ser configurado
 */
public static void addGroup(String cn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
        // Configurar o cn do grupo
        entity.set("cn", cn);
        System.out.println("Gráfico de dados de entrada antes de criar o grupo"+ printDO(root));
        // Criar a entidade group
        root = service.create(root);
        System.out.println("Gráfico de dados de saída depois de criar o grupo"+ printDO(root));
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

/** 
 *  addPersonAccount 
 *  Inclui uma entidade do tipo PersonAccount
 *  @param uid valor a ser configurado
 *  @param cn valor a ser configurado
 *  @param sn valor a ser configurado
 */
public static void addPersonAccount(String uid, String cn, String sn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
        // Configurar as propriedades da pessoa
        entity.set("uid", uid);
        entity.set("cn", cn);
        entity.set("sn", sn);
        System.out.println("Gráfico de dados de entrada antes de criar o usuário"+ printDO(root));
        // Criar a entidade PersonAccount
        root = service.create(root);
        System.out.println("Gráfico de dados de saída depois de criar o usuário"+ printDO(root));
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

/**
 *  addMemberToGroup inclui um usuário no grupo	
 *  @param memberDn uniqueName do grupo
 *  @param groupDn uniqueName do grupo
 */
public static void addMemberToGroup(String memberDn, String groupDn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
        // Configurar o uniqueName do grupo
        entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
                groupDn);
        DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI, SchemaConstants.DO_ENTITY);
        // Configurar o uniqueName do membro
        member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
                memberDn);
        // Incluir o membro no grupo
        entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
        System.out.println("Gráfico de dados de entrada antes de incluir membro no grupo"+ printDO(root));
        // Atualizar o grupo
        root = service.update(root);
        System.out.println("Gráfico de dados de saída depois de incluir membro no grupo"+ printDO(root));
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

/**
 *  getGroupMembership obtém os grupos aninhados
 *  @param memberDn uniqueName do grupo
 */
public static void getGroupMembership(String memberDn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
        // Configurar o uniqueName do grupo
        entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME, 
                memberDn);
        // Configurar o controle de associação ao Grupo
        DataObject grpMbrshipCtrl = SDOHelper.createControlDataObject(root, null, 
                SchemaConstants.DO_GROUP_MEMBERSHIP_CONTROL);
        // Configurar a propriedade de nível para recuperar todas as entidades aninhadas
        grpMbrshipCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
        // Recuperar o atributo cn para todos os grupos
        grpMbrshipCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
        System.out.println("Gráfico de dados de entrada antes de obter associação ao grupo do usuário"+ printDO(root));
        // Obter os membros do grupo
        root = service.get(root);
        System.out.println("Gráfico de dados de saída depois de obter associação ao grupo do usuário"+ printDO(root));
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

Gráficos de Dados de Entrada e Saída

Gráfico de dados de entrada para criar group1:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:cn>group1</wim:cn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de saída depois de criar group1:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="30a09674-ec3b-449b-ab80-6090bcf5b9c4" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de entrada para criar group2:

Gráfico de dados de entrada antes de criar o grupo
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:cn>group2</wim:cn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de saída depois de criar group2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group2,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="95f83f2c-f477-4273-badd-acb7cf1773fe" uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de dados de entrada para criar um usuário:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:uid>user1</wim:uid>
      <wim:cn>user1cn</wim:cn>
      <wim:sn>user1sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de dados de saída depois de criar um usuário:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="96f69bb7-8048-4417-b871-37ebe7362bea" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de dados de entrada para incluir um usuário em um grupo:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      <wim:members>
        <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      </wim:members>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de dados de saída depois de incluir um usuário em um grupo:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de entrada para incluir group1 como membro do group2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
      <wim:members>
        <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      </wim:members>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de saída depois de incluir group1 como membro do group2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group2,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="95f83f2c-f477-4273-badd-acb7cf1773fe" uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de entrada para obter a associação ao grupo de um usuário:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:GroupMembershipControl" level="0">
      <wim:properties>cn</wim:properties>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>

Gráfico de dados de saída depois de obter a associação ao grupo de um usuário, mostrando os grupos aos quais o usuário pertence:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="d8b05414-6965-456f-8284-3971515f8d32" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      <wim:groups>
        <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="f882e5f4-083c-41b2-9475-232881df1933" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
        <wim:cn>group1</wim:cn>
      </wim:groups>
      <wim:groups>
        <wim:identifier externalName="cn=group2,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="385759ea-cc55-47c6-a788-0f15bcc1c011" uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
        <wim:cn>group2</wim:cn>
      </wim:groups>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>


Termos de uso | Feedback