martes, 29 de noviembre de 2011

Logo con sabor a OLPC

sábado, 12 de noviembre de 2011

Busqueda recursiva

Algo de código java, para no perder la costumbre

Tenemos la necesidad de encontrar todos los archivos cuyo nombre cumple con cierta expresión regular.

La solución es sencilla, pero, requiere recursividad.
Va la solución y, si tienen alguna duda o comentario; ya saben que hacer ;)
Nuestra interface es:

import java.io.IOException;
import java.util.List;

/**
 * Interface principal.
 * @author rugi
 */
public interface ISearchable {
    /**
     * Devuelve una lista de paths (incluyendo el nombre del archivo).
     * Busca a partir de folder de manera recursiva
     * archivos cuyo nombre debe cumplir con el criterio de pattern
     * @param folder
     * @param pattern
     * @return 
     */
    public  List getPathFilesInFolder(String folder, String pattern) throws IOException;
}


Nuestra clase queda:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author rugi
 */
public class SearchFilesUtil implements ISearchable {

    public SearchFilesUtil() {
        super();
    }

    @Override
    public List<String> getPathFilesInFolder(String folder, String pattern) throws IOException {
        List<String> res = new ArrayList<String>();
        if (new File(folder).isDirectory()) {
            searchInFolder(new File(folder), pattern, res);
        } else {
            throw new IOException("El origen proporcionado no es válido.");
        }
        return res;
    }

    private void searchInFolder(File folder, String pattern, List<String> r) {
        File[] fs = folder.listFiles();
        for (File f : fs) {
            if (f.isDirectory()) {
                searchInFolder(f, pattern, r);
            } else {
                if (f.getName().matches(pattern)) {
                    r.add(f.getAbsolutePath());                    
                }
            }
        }
    }
}

Y podemos buscar archivos de la siguiente manera(En este ejemplo buscamos archivos .pdf):

    
public static void main(String[] args) throws IOException {
        SearchFilesUtil sf = new SearchFilesUtil();
        Iterator it = sf.getPathFilesInFolder("/Users/user847/books", "(.*?).pdf").iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }


¡¡¡ Listo !!!

domingo, 6 de noviembre de 2011

Oracle Coherence 3.7. Iniciando

Ultimamente  por razones laborales, he estado explorando soluciones para administración de datos distribuida.... datagrid para acortar un poco el nombre ;)

El objetivo de este tipo de soluciones es claro: reducir la latencia asociada a la recuperación de datos;  son principalmente los sistemas financieros quienes han impulsado este tipo de escenarios.

Coherence es la propuesta de Oracle, ya martín nos comentaba hace varios años de él.

Si requieres conocer un poco más sobre coherence; el mejor video para iniciar es este:



El objetivo de este post es iniciar con una serie sobre el tema, y, como casi siempre ocurre; iniciaremos con la instalación del producto.

Instalando coherence-java 3.7.1

  • coherence-java-3.7.1.0b27797.zip
El archivo puede ser descargado aqui: http://www.oracle.com/technetwork/middleware/coherence/downloads/index.html
Lo desintalamos en:
COHERENCE_HOME=/home/rugi/dev/coherence
Al instalarlo se genera una estructura de carpetas como la siguiente:

|-- bin
|-- doc
|-- lib
`-- product.xml
Para ver la estructura completa puedes ver al final de este post el listado completo.

Configurar y ejecutar un sencillo caché-servidor

Antes de poder comenzar a probar esta versión de coherence, es importante establecer ciertas variables.

JAVA_HOME y PATH

Asegurate de tener establecidas las variables
JAVA_HOME e incluir la carpeta /bin en tu PATH de ejecución.

cache-server.cmd/cache-server.sh

El primer paso es establecer la ruta en la cual se encuentra la instalación de coherence 3.7.1, para ello requerimos editar el archivo ubicado en:
COHERENCE_HOME/bin/cache-server.cmd
(o cache-server.sh si unas linux)

Localizamos la linea:

  • COHERENCE_HOME=`dirname $SCRIPT_PATH`;

Y establecemos la ruta exacta de instalación.

  • COHERENCE_HOME="/home/rugi/dev/coherence";

El archivo queda:
//-------  inicio archivo  :cache-server.sh
#!/bin/sh

# This will start a cache server

# specify the Coherence installation directory
SCRIPT_PATH="${BASH_SOURCE[0]}";
if([ -h "${SCRIPT_PATH}" ]) then
  while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
pushd . > /dev/null
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`
COHERENCE_HOME="/home/rugi/dev/coherence";
popd  > /dev/null

# specify the JVM heap size
MEMORY=512m

if [ ! -f ${COHERENCE_HOME}/bin/cache-server.sh ]; then
  echo "coherence.sh: must be run from the Coherence installation directory."
  exit
fi

if [ -f $JAVA_HOME/bin/java ]; then
  JAVAEXEC=$JAVA_HOME/bin/java
else
  JAVAEXEC=java
fi

if [[ $1 == '-jmx' ]]; then
    JMXPROPERTIES="-Dcom.sun.management.jmxremote -Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true"
    shift
fi

JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY $JMXPROPERTIES"

$JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar" com.tangosol.net.DefaultCacheServer $1
//-------  Fin archivo  :cache-server.sh

Para validar que el cambio al archivo ha sido el adecuado, solo basta ejecutarlo.

Debemos obtener una salida como la siguiente:
rugi@Ourobouros:~/dev/coherence/bin$ . cache-server.sh 
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.9) (6b20-1.9.9-0ubuntu1~10.10.2)
OpenJDK Server VM (build 19.0-b09, mixed mode)

2011-11-10 13:44:55.303/0.720 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Loaded operational configuration from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2011-11-10 13:44:55.425/0.842 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Loaded operational overrides from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2011-11-10 13:44:55.425/0.842 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2011-11-10 13:44:55.431/0.848 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified


Oracle Coherence Version 3.7.1.0 Build 27797
 Grid Edition: Development mode
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

2011-11-10 13:44:56.171/1.588 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): Loaded cache configuration from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/coherence-cache-config.xml"
2011-11-10 13:44:57.381/2.798 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): TCMP bound to /172.16.4.56:8088 using SystemSocketProvider
2011-11-10 13:45:00.795/6.212 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Created a new cluster "cluster:0xFCDB" with Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=2) UID=0xAC100438000001338F02FC95EC981F98
2011-11-10 13:45:00.804/6.221 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): Started cluster Name=cluster:0xFCDB


Group{Address=224.3.7.0, Port=37000, TTL=4}

MasterMemberSet(
  ThisMember=Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
  OldestMember=Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
  ActualMemberSet=MemberSet(Size=1
    Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
    )
  MemberId|ServiceVersion|ServiceJoined|MemberState
    1|3.7.1|2011-11-10 13:45:00.795|JOINED
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[]}
IpMonitor{AddressListSize=0}

2011-11-10 13:45:00.849/6.266 Oracle Coherence GE 3.7.1.0  (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
2011-11-10 13:45:01.149/6.566 Oracle Coherence GE 3.7.1.0  (thread=DistributedCache, member=1): Service DistributedCache joined the cluster with senior service member 1
2011-11-10 13:45:01.268/6.685 Oracle Coherence GE 3.7.1.0  (thread=ReplicatedCache, member=1): Service ReplicatedCache joined the cluster with senior service member 1
2011-11-10 13:45:01.276/6.693 Oracle Coherence GE 3.7.1.0  (thread=OptimisticCache, member=1): Service OptimisticCache joined the cluster with senior service member 1
2011-11-10 13:45:01.281/6.698 Oracle Coherence GE 3.7.1.0  (thread=Invocation:InvocationService, member=1): Service InvocationService joined the cluster with senior service member 1
2011-11-10 13:45:01.284/6.702 Oracle Coherence GE 3.7.1.0  (thread=main, member=1): 
Services
  (
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=3.7.1, OldestMemberId=1}
  InvocationService{Name=Management, State=(SERVICE_STARTED), Id=1, Version=3.1, OldestMemberId=1}
  PartitionedCache{Name=DistributedCache, State=(SERVICE_STARTED), LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=257, BackupPartitions=0}
  ReplicatedCache{Name=ReplicatedCache, State=(SERVICE_STARTED), Id=3, Version=3.0, OldestMemberId=1}
  Optimistic{Name=OptimisticCache, State=(SERVICE_STARTED), Id=4, Version=3.0, OldestMemberId=1}
  InvocationService{Name=InvocationService, State=(SERVICE_STARTED), Id=5, Version=3.1, OldestMemberId=1}
  )

Started DefaultCacheServer...

La salida de la ejecución contiene mucha información que de momento abstraeremos, el mensaje que debemos tomar encuenta en este momento es:
Started DefaultCacheServer...

Configurar y ejecutar un sencillo cliente.

Abrimos otra ventana, y antes de ejecutar, nuevamente nos aseguramos de que la variable JAVA_HOME esté establecida y que el path incluye la carpeta /bin para poder invocar al jdk.

Ahora, para poder ejecutar la aplicación cliente, es necesario modificar el archivo:
COHERENCE_HOME/bin/query.cmd
(o query.sh si unas linux)

Localizamos la linea:

  • COHERENCE_HOME=`dirname $SCRIPT_PATH`;

Y establecemos la ruta exacta de instalación.

  • COHERENCE_HOME="/home/rugi/dev/coherence";

El archivo queda:
//------------------- inicio del archivo query.sh
#!/bin/sh

# This will start a command line query application

# specify the Coherence installation directory
SCRIPT_PATH="${BASH_SOURCE[0]}";
if([ -h "${SCRIPT_PATH}" ]) then
  while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
pushd . > /dev/null
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`
COHERENCE_HOME="/home/rugi/dev/coherence";
popd  > /dev/null

# specify the jline installation directory
JLINE_HOME=$COHERENCE_HOME/lib

# specify if the console will also act as a server
STORAGE_ENABLED=false

# specify the JVM heap size
MEMORY=64m


if [ ! -f ${COHERENCE_HOME}/bin/query.sh ]; then
  echo "query.sh: must be run from the Coherence installation directory."
  exit
fi

if [ -f $JAVA_HOME/bin/java ]; then
  JAVAEXEC=$JAVA_HOME/bin/java
else
  JAVAEXEC=java
fi

if [ $STORAGE_ENABLED == "true" ]; then
 echo "** Starting storage enabled console **"
else
 echo "** Starting storage disabled console **"
fi

JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY -Dtangosol.coherence.distributed.localstorage=$STORAGE_ENABLED"

$JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar:$JLINE_HOME/jline.jar" com.tangosol.coherence.dslquery.QueryPlus "$@"
//------------------- fin del archivom query.sh

Algo interesante que podemos ver es que, el cliente de coherence utiliza Jline; Jline es una librería que sirve para facilitar la construcción de aplicaciones con interfaz de linea de comando (CLI.command-line interface)

Para asegurarnos que todo esta establecido correctamente; ejecutamos el archivo:

Debemos tener algo como lo siguiente:
rugi@Ourobouros:~/dev/coherence/bin$ . query.sh 
** Starting storage disabled console **
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.9) (6b20-1.9.9-0ubuntu1~10.10.2)
OpenJDK Server VM (build 19.0-b09, mixed mode)

Coherence Command Line Tool

CohQL> 

Si vemos este prompt, estamos listos para poder utilizar el servidor que recien hemos arrancado. Como cualquier otro cliente, a través de este prompt interactuamos con el servidor, nuestra principal retroalimentación es la salida que va generando por cada comando invocado.

Manos a la obra.

El primer paso es crear un caché llamado "products", para ello sólo requerimos ejecutar el siguiente comando: create cache "products" Obtendremos una salida como la siguiente:
//--------------------------------------  Salida para la creacion de un cache
CohQL> create cache "products"
2011-11-10 14:12:22.430/666.222 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Loaded operational configuration from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2011-11-10 14:12:22.586/666.378 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Loaded operational overrides from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2011-11-10 14:12:22.587/666.379 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2011-11-10 14:12:22.595/666.387 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified

Oracle Coherence Version 3.7.1.0 Build 27797
 Grid Edition: Development mode
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

2011-11-10 14:12:23.138/666.930 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): Loaded cache configuration from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/coherence-cache-config.xml"
2011-11-10 14:12:24.064/667.856 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): TCMP bound to /172.16.4.56:8090 using SystemSocketProvider
2011-11-10 14:12:24.455/668.247 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2011-11-10 14:12:24.269, Address=172.16.4.56:8090, MachineId=60568, Location=site:,machine:Ourobouros,process:6215, Role=TangosolCoherenceQueryPlus, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=2) joined cluster "cluster:0xFCDB" with senior Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=2)
2011-11-10 14:12:24.510/668.302 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service Management with senior member 1
2011-11-10 14:12:24.510/668.302 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service DistributedCache with senior member 1
2011-11-10 14:12:24.510/668.302 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service ReplicatedCache with senior member 1
2011-11-10 14:12:24.510/668.303 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service OptimisticCache with senior member 1
2011-11-10 14:12:24.511/668.303 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service InvocationService with senior member 1
2011-11-10 14:12:24.513/668.305 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): Started cluster Name=cluster:0xFCDB

Group{Address=224.3.7.0, Port=37000, TTL=4}

MasterMemberSet(
  ThisMember=Member(Id=2, Timestamp=2011-11-10 14:12:24.269, Address=172.16.4.56:8090, MachineId=60568, Location=site:,machine:Ourobouros,process:6215, Role=TangosolCoherenceQueryPlus)
  OldestMember=Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
  ActualMemberSet=MemberSet(Size=2
    Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
    Member(Id=2, Timestamp=2011-11-10 14:12:24.269, Address=172.16.4.56:8090, MachineId=60568, Location=site:,machine:Ourobouros,process:6215, Role=TangosolCoherenceQueryPlus)
    )
  MemberId|ServiceVersion|ServiceJoined|MemberState
    1|3.7.1|2011-11-10 13:44:57.493|JOINED,
    2|3.7.1|2011-11-10 14:12:24.504|JOINED
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[1]}
IpMonitor{AddressListSize=0}

2011-11-10 14:12:24.595/668.388 Oracle Coherence GE 3.7.1.0  (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 1
2011-11-10 14:12:24.945/668.737 Oracle Coherence GE 3.7.1.0  (thread=DistributedCache, member=2): Service DistributedCache joined the cluster with senior service member 1

CohQL>
//--------------------------------------- Salida para la creacion de un cache
 

Nuestro caché está ya creado; el siguiente paso es agregar un elemento; debemos recordar que de un principio, podemos agregar elementos con la forma:
"llave"->"valor":

Para insertar un elemento se sigue una sintaxis muy parecida a SQL:

  • insert into [cache] key [llave] value [valor]

Para nuestro ejemplo:

  • insert into "products" key "television" value "ID-5070"

Si no se genera mensaje de excepcion, la inserción ha sido exitosa.

La actualización, no podia ser de otra manera, también tiene una sintaxis similar al update de SQL.

  • update [cache] set value() = [valor] where key() like [llave]

Para nuestro ejemplo:

  • update "products" set value() = "ID-5080" where key() like "television

Para el update, si tenemos retroalimentación de la consola:
CohQL>update "products" set value() = "ID-5080" where key() like "television"
Results
television: true 

Y, si tenemos insert y update, no podía faltar el select:

  • select * from [cache]

Para nuestro ejemplo:

  • select * from "products"

La salida muestra únicamente las llaves:
CohQL> select *  from "products"         
Results
ID-5080

Para mostrar tanto la llave como el valor, debemos ejecutar lo siguiente:

  • select key(), value() from "products" 

CohQL> select key(), value() from "products" 
Results
"television", "ID-5080"

Si pedimos en particular un valor que no existe,

  • select key(), value() from "products" where key() is "radio" 

El resultado, es obviamente, vacío:
CohQL> select key(), value() from "products" where key() is "radio" 
Results

Podemos, eliminar el contenido, eliminar el cache y volverlo a crear:
CohQL> delete from "products"
Results

CohQL> drop cache "products" 

CohQL> create cache "products" 

CohQL> 


Con este cache limpio, agregamos unos 5 valores:
CohQL> insert into "products" key "television" value "ID-5080"

CohQL> insert into "products" key "radio" value "ID-5090"

CohQL> insert into "products" key "MP3 Player" value "ID-5100"

CohQL> insert into "products" key "laptop" value "ID-5110"

CohQL> select key(), value() from "products" 
Results
"television", "ID-5080"
"radio", "ID-5090"
"MP3 Player", "ID-5100"
"laptop", "ID-5110"

CohQL> 

Creamos un respaldo de nuestro cache:

  • backup cache "products" to "products.bkup"

CohQL> backup cache "products" to "products.bkup"

Eliminamos el contenido:
CohQL> delete from "products" 
Results


Validamos que esté vacío:
CohQL> select * from "products"
Results



Recuperamos el cache:
 restore cache "products" from file "products.bkup"

Y validamos que la restauración fue correcta:
CohQL> select * from "products"                         
Results
ID-5100
ID-5090
ID-5080
ID-5110


Eliminamos nuestro cache:
CohQL> drop cache "products"
2011-11-10 14:30:39.558/13.607 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Loaded operational configuration from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2011-11-10 14:30:39.669/13.718 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Loaded operational overrides from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2011-11-10 14:30:39.670/13.719 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2011-11-10 14:30:39.676/13.725 Oracle Coherence 3.7.1.0  (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified

Oracle Coherence Version 3.7.1.0 Build 27797
 Grid Edition: Development mode
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

2011-11-10 14:30:40.327/14.376 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): Loaded cache configuration from "jar:file:/home/rugi/dev/coherence/lib/coherence.jar!/coherence-cache-config.xml"
2011-11-10 14:30:41.353/15.402 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): TCMP bound to /172.16.4.56:8090 using SystemSocketProvider
2011-11-10 14:30:41.798/15.847 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): This Member(Id=3, Timestamp=2011-11-10 14:30:41.617, Address=172.16.4.56:8090, MachineId=60568, Location=site:,machine:Ourobouros,process:6451, Role=TangosolCoherenceQueryPlus, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=2) joined cluster "cluster:0xFCDB" with senior Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=2)
2011-11-10 14:30:42.016/16.065 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service Management with senior member 1
2011-11-10 14:30:42.016/16.065 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service DistributedCache with senior member 1
2011-11-10 14:30:42.016/16.065 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service ReplicatedCache with senior member 1
2011-11-10 14:30:42.016/16.065 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service OptimisticCache with senior member 1
2011-11-10 14:30:42.016/16.065 Oracle Coherence GE 3.7.1.0  (thread=Cluster, member=n/a): Member 1 joined Service InvocationService with senior member 1
2011-11-10 14:30:42.018/16.067 Oracle Coherence GE 3.7.1.0  (thread=main, member=n/a): Started cluster Name=cluster:0xFCDB

Group{Address=224.3.7.0, Port=37000, TTL=4}

MasterMemberSet(
  ThisMember=Member(Id=3, Timestamp=2011-11-10 14:30:41.617, Address=172.16.4.56:8090, MachineId=60568, Location=site:,machine:Ourobouros,process:6451, Role=TangosolCoherenceQueryPlus)
  OldestMember=Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
  ActualMemberSet=MemberSet(Size=2
    Member(Id=1, Timestamp=2011-11-10 13:44:57.493, Address=172.16.4.56:8088, MachineId=60568, Location=site:,machine:Ourobouros,process:6007, Role=CoherenceServer)
    Member(Id=3, Timestamp=2011-11-10 14:30:41.617, Address=172.16.4.56:8090, MachineId=60568, Location=site:,machine:Ourobouros,process:6451, Role=TangosolCoherenceQueryPlus)
    )
  MemberId|ServiceVersion|ServiceJoined|MemberState
    1|3.7.1|2011-11-10 13:44:57.493|JOINED,
    3|3.7.1|2011-11-10 14:30:42.013|JOINED
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[1]}
IpMonitor{AddressListSize=0}

2011-11-10 14:30:42.074/16.125 Oracle Coherence GE 3.7.1.0  (thread=Invocation:Management, member=3): Service Management joined the cluster with senior service member 1
2011-11-10 14:30:42.397/16.446 Oracle Coherence GE 3.7.1.0  (thread=DistributedCache, member=3): Service DistributedCache joined the cluster with senior service member 1

CohQL> 


Y salimos del cliente:
CohQL> bye

Listo, con esta serie de ejercicios hemos validado que nuestra instalación se encuentra funcionando adecuadamente.

Poco a poco iremos conociendo otras características de esta versión de coherence.

¡Hasta la próxima lección de coherence!
---
RuGI
Isaac Ruiz Guerra.

Anexo 1. Estructura completa del archivo: coherence-java-3.7.1.0b27797.zip
|-- bin
|   |-- cache-server.cmd
|   |-- cache-server.sh
|   |-- coherence.cmd
|   |-- coherence.sh
|   |-- datagram-test.cmd
|   |-- datagram-test.sh
|   |-- multicast-test.cmd
|   |-- multicast-test.sh
|   |-- optimize.reg
|   |-- query.cmd
|   |-- query.sh
|   `-- readme.txt
|-- doc
|   |-- api
|   |   |-- allclasses-frame.html
|   |   |-- allclasses-noframe.html
|   |   |-- com
|   |   |   `-- tangosol
|   |   |       |-- coherence
|   |   |       |   |-- commonj
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- WorkManager.AbstractWork.html
|   |   |       |   |   |-- WorkManager.CollectMembershipInfo.html
|   |   |       |   |   |-- WorkManager.html
|   |   |       |   |   |-- WorkManager.ReleaseWork.html
|   |   |       |   |   |-- WorkManager.RemoteWorkManager.html
|   |   |       |   |   |-- WorkManager.RequestStatus.html
|   |   |       |   |   |-- WorkManager.ScheduleWork.html
|   |   |       |   |   |-- WorkManager.ScheduleWorkRejectedException.html
|   |   |       |   |   |-- WorkManager.SendFeedback.html
|   |   |       |   |   |-- WorkManager.ServiceListener.html
|   |   |       |   |   |-- WorkManager.WorkHolder.Event.html
|   |   |       |   |   |-- WorkManager.WorkHolder.html
|   |   |       |   |   |-- WorkManager.WorkObserver.html
|   |   |       |   |   `-- WorkManager.WorkStatus.html
|   |   |       |   |-- hibernate
|   |   |       |   |   |-- CoherenceCache.html
|   |   |       |   |   |-- CoherenceCacheProvider.html
|   |   |       |   |   |-- HibernateCacheLoader.html
|   |   |       |   |   |-- HibernateCacheStore.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   `-- package-tree.html
|   |   |       |   |-- jpa
|   |   |       |   |   |-- JpaCacheLoader.html
|   |   |       |   |   |-- JpaCacheStore.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   `-- package-tree.html
|   |   |       |   |-- rest
|   |   |       |   |   |-- CacheResource.html
|   |   |       |   |   |-- DefaultKeyConverter.html
|   |   |       |   |   |-- DefaultRootResource.html
|   |   |       |   |   |-- EntryResource.html
|   |   |       |   |   |-- EntrySetResource.html
|   |   |       |   |   |-- io
|   |   |       |   |   |   |-- AbstractMarshaller.html
|   |   |       |   |   |   |-- JsonJacksonMarshaller.html
|   |   |       |   |   |   |-- JsonJaxbMarshaller.html
|   |   |       |   |   |   |-- KeyConverterAdapter.html
|   |   |       |   |   |   |-- Marshaller.html
|   |   |       |   |   |   |-- MarshallerRegistry.html
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   |-- package-tree.html
|   |   |       |   |   |   `-- XmlJaxbMarshaller.html
|   |   |       |   |   |-- KeyConverter.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- server
|   |   |       |   |   |   |-- AbstractHttpServer.html
|   |   |       |   |   |   |-- DefaultHttpServer.html
|   |   |       |   |   |   |-- DefaultResourceConfig.html
|   |   |       |   |   |   |-- GrizzlyHttpServer.html
|   |   |       |   |   |   |-- HttpServer.html
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   `-- package-tree.html
|   |   |       |   |   `-- util
|   |   |       |   |       |-- aggregator
|   |   |       |   |       |   |-- AggregatorFactory.html
|   |   |       |   |       |   |-- AggregatorRegistry.html
|   |   |       |   |       |   |-- DefaultAggregatorFactory.html
|   |   |       |   |       |   |-- package-frame.html
|   |   |       |   |       |   |-- package-summary.html
|   |   |       |   |       |   `-- package-tree.html
|   |   |       |   |       `-- processor
|   |   |       |   |           |-- NumberIncrementorFactory.html
|   |   |       |   |           |-- NumberMultiplierFactory.html
|   |   |       |   |           |-- package-frame.html
|   |   |       |   |           |-- package-summary.html
|   |   |       |   |           |-- package-tree.html
|   |   |       |   |           |-- ProcessorFactory.html
|   |   |       |   |           `-- ProcessorRegistry.html
|   |   |       |   |-- servlet
|   |   |       |   |   |-- AbstractHttpSessionCollection.ApplicationScopeController.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.DistributedController.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.ExitAgent.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.ExitObserver.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.ExitTask.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.GlobalScopeController.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.HybridController.html
|   |   |       |   |   |-- AbstractHttpSessionCollection.LocalController.html
|   |   |       |   |   |-- AbstractHttpSessionModel.html
|   |   |       |   |   |-- AbstractReapTask.html
|   |   |       |   |   |-- AttributeHolder.html
|   |   |       |   |   |-- CacheDelegator.html
|   |   |       |   |   |-- CacheFactoryLogHandler.html
|   |   |       |   |   |-- CoherenceHttpSessionCollection.html
|   |   |       |   |   |-- ConfigurationImpl.html
|   |   |       |   |   |-- DefaultCacheDelegator.html
|   |   |       |   |   |-- HttpRequestContext.html
|   |   |       |   |   |-- HttpSessionCollection.AttributeScopeController.html
|   |   |       |   |   |-- HttpSessionCollection.html
|   |   |       |   |   |-- HttpSessionCollection.SessionDistributionController.html
|   |   |       |   |   |-- HttpSessionIdGenerator.html
|   |   |       |   |   |-- HttpSessionModel.html
|   |   |       |   |   |-- IncrementalReapTask.html
|   |   |       |   |   |-- LogThreadsHoldingLockAgent.html
|   |   |       |   |   |-- management
|   |   |       |   |   |   |-- HttpSessionManager.html
|   |   |       |   |   |   |-- HttpSessionManagerMBean.html
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   `-- package-tree.html
|   |   |       |   |   |-- MonolithicHttpSessionCollection.html
|   |   |       |   |   |-- MonolithicHttpSessionModel.html
|   |   |       |   |   |-- OptimizedHolder.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- ParallelReapTask.html
|   |   |       |   |   |-- RandomHttpSessionIdGenerator.html
|   |   |       |   |   |-- RequestContext.html
|   |   |       |   |   |-- SessionExpiryFilterFactory.html
|   |   |       |   |   |-- SessionHelper.Factory.html
|   |   |       |   |   |-- SessionHelper.html
|   |   |       |   |   |-- SessionHelper.SessionReaperDaemon.html
|   |   |       |   |   |-- SessionHelper.SessionReaperDaemon.IncrementalReapTask.html
|   |   |       |   |   |-- SessionHelper.SessionReaperDaemon.StartReapingTask.html
|   |   |       |   |   |-- SessionHelper.Task.html
|   |   |       |   |   |-- SessionLocalBackingMapCacheDelegator.html
|   |   |       |   |   |-- SessionReaperStatistics.html
|   |   |       |   |   |-- SplitHttpSessionCollection.html
|   |   |       |   |   |-- SplitHttpSessionModel.html
|   |   |       |   |   |-- SplitSessionCollectionConfiguration.html
|   |   |       |   |   |-- SplittableHolder.html
|   |   |       |   |   |-- TraditionalHttpSessionCollection.html
|   |   |       |   |   |-- TraditionalHttpSessionModel.html
|   |   |       |   |   |-- WebPluginInstaller.ApplyPatch.html
|   |   |       |   |   `-- WebPluginInstaller.html
|   |   |       |   |-- toplink
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- TopLinkCacheLoader.html
|   |   |       |   |   `-- TopLinkCacheStore.html
|   |   |       |   |-- transaction
|   |   |       |   |   |-- ConnectionFactory.ConnectionSpec.html
|   |   |       |   |   |-- ConnectionFactory.html
|   |   |       |   |   |-- Connection.html
|   |   |       |   |   |-- ConnectionSpecImpl.html
|   |   |       |   |   |-- DefaultConnectionFactory.html
|   |   |       |   |   |-- exception
|   |   |       |   |   |   |-- ConnectionClosedException.html
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   |-- package-tree.html
|   |   |       |   |   |   |-- PredicateFailedException.html
|   |   |       |   |   |   |-- ReadTimedOutException.html
|   |   |       |   |   |   |-- RollbackException.html
|   |   |       |   |   |   |-- UnableToAcquireLockException.html
|   |   |       |   |   |   `-- VersionNotAvailableException.html
|   |   |       |   |   |-- Isolation.html
|   |   |       |   |   |-- OptimisticNamedCache.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- Status.html
|   |   |       |   |   |-- TransactionId.html
|   |   |       |   |   `-- TransactionState.html
|   |   |       |   `-- weblogic
|   |   |       |       |-- package-frame.html
|   |   |       |       |-- package-summary.html
|   |   |       |       |-- package-tree.html
|   |   |       |       |-- PortalCacheProvider.CacheImpl.EntryInfo.html
|   |   |       |       |-- PortalCacheProvider.CacheImpl.html
|   |   |       |       |-- PortalCacheProvider.FlushAgent.html
|   |   |       |       |-- PortalCacheProvider.html
|   |   |       |       |-- PortalCacheProvider.ReloadableCacheImpl.html
|   |   |       |       `-- PortalCacheProvider.ReloadableCacheImpl.ReloadableEntryInfo.html
|   |   |       |-- io
|   |   |       |   |-- AbstractBinaryStore.html
|   |   |       |   |-- AbstractByteArrayReadBuffer.ByteArrayBufferInput.html
|   |   |       |   |-- AbstractByteArrayReadBuffer.html
|   |   |       |   |-- AbstractEvolvable.html
|   |   |       |   |-- AbstractReadBuffer.AbstractBufferInput.html
|   |   |       |   |-- AbstractReadBuffer.html
|   |   |       |   |-- AbstractWriteBuffer.AbstractBufferOutput.html
|   |   |       |   |-- AbstractWriteBuffer.html
|   |   |       |   |-- AsyncBinaryStore.html
|   |   |       |   |-- AsyncBinaryStoreManager.html
|   |   |       |   |-- AsyncBinaryStore.QueueDaemon.html
|   |   |       |   |-- Base64InputStream.html
|   |   |       |   |-- Base64OutputStream.html
|   |   |       |   |-- bdb
|   |   |       |   |   |-- BerkeleyDBBinaryStore.DatabaseHolder.html
|   |   |       |   |   |-- BerkeleyDBBinaryStore.html
|   |   |       |   |   |-- BerkeleyDBBinaryStoreManager.html
|   |   |       |   |   |-- DatabaseFactory.EnvironmentHolder.DirectoryLock.html
|   |   |       |   |   |-- DatabaseFactory.EnvironmentHolder.html
|   |   |       |   |   |-- DatabaseFactory.html
|   |   |       |   |   |-- DatabaseFactoryManager.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   `-- package-tree.html
|   |   |       |   |-- BinaryDeltaCompressor.html
|   |   |       |   |-- BinaryStore.html
|   |   |       |   |-- BinaryStoreManager.html
|   |   |       |   |-- BinaryStore.SizeAware.html
|   |   |       |   |-- BufferManagerAdapter.html
|   |   |       |   |-- ByteArrayReadBuffer.html
|   |   |       |   |-- ByteArrayWriteBuffer.Allocator.html
|   |   |       |   |-- ByteArrayWriteBuffer.ByteArrayBufferOutput.html
|   |   |       |   |-- ByteArrayWriteBuffer.html
|   |   |       |   |-- ClassLoaderAware.html
|   |   |       |   |-- ConfigurableSerializerFactory.html
|   |   |       |   |-- DebugDataOutputStream.html
|   |   |       |   |-- DecoratedBinaryDeltaCompressor.html
|   |   |       |   |-- DecorationOnlyDeltaCompressor.html
|   |   |       |   |-- DefaultSerializer.html
|   |   |       |   |-- DelegatingWriteBuffer.DelegatingBufferOutput.html
|   |   |       |   |-- DelegatingWriteBuffer.html
|   |   |       |   |-- DeltaCompressor.html
|   |   |       |   |-- Evolvable.html
|   |   |       |   |-- ExternalizableLite.html
|   |   |       |   |-- IndentingWriter.html
|   |   |       |   |-- InputStreaming.html
|   |   |       |   |-- journal
|   |   |       |   |   |-- AbstractJournalRM.CollectorDaemon.html
|   |   |       |   |   |-- AbstractJournalRM.html
|   |   |       |   |   |-- AbstractJournalRM.JournalFile.html
|   |   |       |   |   |-- AbstractJournalRM.JournalImpl.html
|   |   |       |   |   |-- BackupJournalRM.FlashConsumer.html
|   |   |       |   |   |-- BackupJournalRM.html
|   |   |       |   |   |-- BackupJournalRM.JournalImpl.html
|   |   |       |   |   |-- BackupJournalRM.RamConsumer.html
|   |   |       |   |   |-- FlashJournalRM.Buffer.html
|   |   |       |   |   |-- FlashJournalRM.BufferPool.html
|   |   |       |   |   |-- FlashJournalRM.html
|   |   |       |   |   |-- FlashJournalRM.JournalFile.html
|   |   |       |   |   |-- FlashJournalRM.PreparerDaemon.html
|   |   |       |   |   |-- FlashJournalRM.WriterDaemon.FileFullTask.html
|   |   |       |   |   |-- FlashJournalRM.WriterDaemon.html
|   |   |       |   |   |-- FlashJournalRM.WriterDaemon.PendingWriteTask.html
|   |   |       |   |   |-- JournalBinaryStore.html
|   |   |       |   |   |-- Journal.html
|   |   |       |   |   |-- Journal.JournalConsumer.html
|   |   |       |   |   |-- JournalMBean.html
|   |   |       |   |   |-- JournalService.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- RamJournalRM.BufferPool.html
|   |   |       |   |   |-- RamJournalRM.FlashConsumer.html
|   |   |       |   |   |-- RamJournalRM.html
|   |   |       |   |   |-- RamJournalRM.JournalFile.html
|   |   |       |   |   `-- RamJournalRM.JournalImpl.html
|   |   |       |   |-- MultiBufferReadBuffer.html
|   |   |       |   |-- MultiBufferReadBuffer.MultiBufferInput.html
|   |   |       |   |-- MultiBufferWriteBuffer.html
|   |   |       |   |-- MultiBufferWriteBuffer.MultiBufferOutput.html
|   |   |       |   |-- MultiBufferWriteBuffer.WriteBufferPool.html
|   |   |       |   |-- MultiByteArrayInputStream.html
|   |   |       |   |-- MultiByteArrayOutputStream.html
|   |   |       |   |-- MultiplexingWriteBufferPool.html
|   |   |       |   |-- nio
|   |   |       |   |   |-- AbstractBufferManager.html
|   |   |       |   |   |-- AbstractStoreManager.html
|   |   |       |   |   |-- BinaryMap.Block.html
|   |   |       |   |   |-- BinaryMap.Entry.html
|   |   |       |   |   |-- BinaryMap.EntrySet.html
|   |   |       |   |   |-- BinaryMap.html
|   |   |       |   |   |-- BinaryMap.KeySet.html
|   |   |       |   |   |-- BinaryMapStore.html
|   |   |       |   |   |-- BinaryMap.ValuesCollection.html
|   |   |       |   |   |-- ByteBufferInputStream.html
|   |   |       |   |   |-- ByteBufferManager.html
|   |   |       |   |   |-- ByteBufferOutputStream.html
|   |   |       |   |   |-- ByteBufferReadBuffer.ByteBufferInput.html
|   |   |       |   |   |-- ByteBufferReadBuffer.html
|   |   |       |   |   |-- ByteBufferWriteBuffer.ByteBufferOutput.html
|   |   |       |   |   |-- ByteBufferWriteBuffer.html
|   |   |       |   |   |-- DirectBufferManager.html
|   |   |       |   |   |-- DirectStoreManager.html
|   |   |       |   |   |-- MappedBufferManager.html
|   |   |       |   |   |-- MappedStoreManager.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   `-- package-tree.html
|   |   |       |   |-- ObjectStreamFactory.html
|   |   |       |   |-- OutputStreaming.html
|   |   |       |   |-- package-frame.html
|   |   |       |   |-- package-summary.html
|   |   |       |   |-- package-tree.html
|   |   |       |   |-- PackedDataInputStream.html
|   |   |       |   |-- PackedDataOutputStream.html
|   |   |       |   |-- pof
|   |   |       |   |   |-- AbstractPofHandler.html
|   |   |       |   |   |-- annotation
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   |-- package-tree.html
|   |   |       |   |   |   |-- Portable.html
|   |   |       |   |   |   `-- PortableProperty.html
|   |   |       |   |   |-- ConfigurablePofContext.html
|   |   |       |   |   |-- ConfigurablePofContext.PofConfig.html
|   |   |       |   |   |-- DuplexingPofHandler.html
|   |   |       |   |   |-- EnumPofSerializer.html
|   |   |       |   |   |-- EvolvablePortableObject.html
|   |   |       |   |   |-- ExternalizableLitePofSerializer.html
|   |   |       |   |   |-- ExternalizablePofSerializer.html
|   |   |       |   |   |-- LoggingPofHandler.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- PofAnnotationSerializer.html
|   |   |       |   |   |-- PofBufferReader.html
|   |   |       |   |   |-- PofBufferReader.IdentityHolder.html
|   |   |       |   |   |-- PofBufferReader.UserTypeReader.html
|   |   |       |   |   |-- PofBufferWriter.html
|   |   |       |   |   |-- PofBufferWriter.ReferenceLibrary.html
|   |   |       |   |   |-- PofBufferWriter.UserTypeWriter.html
|   |   |       |   |   |-- PofConstants.html
|   |   |       |   |   |-- PofContext.html
|   |   |       |   |   |-- PofDeltaCompressor.ChangeTracker.html
|   |   |       |   |   |-- PofDeltaCompressor.html
|   |   |       |   |   |-- PofHandler.html
|   |   |       |   |   |-- PofHelper.html
|   |   |       |   |   |-- PofHelper.ReadableEntrySetMap.html
|   |   |       |   |   |-- PofHelper.WriteableEntrySetMap.html
|   |   |       |   |   |-- PofInputStream.html
|   |   |       |   |   |-- PofOutputStream.html
|   |   |       |   |   |-- PofParser.html
|   |   |       |   |   |-- PofPrincipal.html
|   |   |       |   |   |-- PofReader.html
|   |   |       |   |   |-- PofSerializer.html
|   |   |       |   |   |-- PofWriter.html
|   |   |       |   |   |-- PortableException.html
|   |   |       |   |   |-- PortableObject.html
|   |   |       |   |   |-- PortableObjectSerializer.html
|   |   |       |   |   |-- PrincipalPofSerializer.html
|   |   |       |   |   |-- RawDate.html
|   |   |       |   |   |-- RawDateTime.html
|   |   |       |   |   |-- RawDayTimeInterval.html
|   |   |       |   |   |-- RawQuad.html
|   |   |       |   |   |-- RawTime.html
|   |   |       |   |   |-- RawTimeInterval.html
|   |   |       |   |   |-- RawYearMonthInterval.html
|   |   |       |   |   |-- reflect
|   |   |       |   |   |   |-- AbstractPofPath.html
|   |   |       |   |   |   |-- AbstractPofValue.html
|   |   |       |   |   |   |-- Codec.html
|   |   |       |   |   |   |-- Codecs.AbstractCodec.html
|   |   |       |   |   |   |-- Codecs.DefaultCodec.html
|   |   |       |   |   |   |-- Codecs.html
|   |   |       |   |   |   |-- ComplexPofValue.html
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   |-- package-tree.html
|   |   |       |   |   |   |-- PofArray.html
|   |   |       |   |   |   |-- PofCollection.html
|   |   |       |   |   |   |-- PofNavigationException.html
|   |   |       |   |   |   |-- PofNavigator.html
|   |   |       |   |   |   |-- PofReflectionHelper.html
|   |   |       |   |   |   |-- PofSparseArray.html
|   |   |       |   |   |   |-- PofSparseArray.NilPofValue.html
|   |   |       |   |   |   |-- PofUniformArray.html
|   |   |       |   |   |   |-- PofUniformCollection.html
|   |   |       |   |   |   |-- PofUniformSparseArray.html
|   |   |       |   |   |   |-- PofUserType.html
|   |   |       |   |   |   |-- PofValue.html
|   |   |       |   |   |   |-- PofValueParser.html
|   |   |       |   |   |   |-- SimplePofPath.html
|   |   |       |   |   |   `-- SimplePofValue.html
|   |   |       |   |   |-- SafeConfigurablePofContext.html
|   |   |       |   |   |-- SafeConfigurablePofContext.JavaPofSerializer.html
|   |   |       |   |   |-- SafeConfigurablePofContext.SafePofSerializer.html
|   |   |       |   |   |-- SimplePofContext.html
|   |   |       |   |   |-- SubjectPofSerializer.html
|   |   |       |   |   |-- ThrowablePofSerializer.html
|   |   |       |   |   |-- ValidatingPofHandler.Complex.html
|   |   |       |   |   |-- ValidatingPofHandler.ComplexMap.html
|   |   |       |   |   |-- ValidatingPofHandler.html
|   |   |       |   |   |-- WritingPofHandler.Complex.html
|   |   |       |   |   |-- WritingPofHandler.ComplexMap.html
|   |   |       |   |   |-- WritingPofHandler.html
|   |   |       |   |   `-- XmlSerializablePofSerializer.html
|   |   |       |   |-- ReadBuffer.BufferInput.html
|   |   |       |   |-- ReadBuffer.html
|   |   |       |   |-- Resolving.html
|   |   |       |   |-- ResolvingMarshalInputStream.html
|   |   |       |   |-- ResolvingMarshalOutputStream.html
|   |   |       |   |-- ResolvingObjectInputStream.html
|   |   |       |   |-- ResolvingObjectOutputStream.html
|   |   |       |   |-- SerializerAware.html
|   |   |       |   |-- SerializerFactory.html
|   |   |       |   |-- Serializer.html
|   |   |       |   |-- Utf8Reader.html
|   |   |       |   |-- Utf8Writer.html
|   |   |       |   |-- WrapperBufferInput.html
|   |   |       |   |-- WrapperBufferOutput.html
|   |   |       |   |-- WrapperDataInputStream.html
|   |   |       |   |-- WrapperDataOutputStream.html
|   |   |       |   |-- WrapperInputStream.html
|   |   |       |   |-- WrapperObjectInputStream.html
|   |   |       |   |-- WrapperObjectOutputStream.html
|   |   |       |   |-- WrapperOutputStream.html
|   |   |       |   |-- WrapperStreamFactory.html
|   |   |       |   |-- WriteBuffer.BufferOutput.html
|   |   |       |   |-- WriteBuffer.html
|   |   |       |   `-- WriterPrintStream.html
|   |   |       |-- net
|   |   |       |   |-- AbstractBackingMapManager.html
|   |   |       |   |-- AbstractInvocable.html
|   |   |       |   |-- AbstractPriorityTask.html
|   |   |       |   |-- Action.html
|   |   |       |   |-- ActionPolicy.html
|   |   |       |   |-- AddressProvider.html
|   |   |       |   |-- BackingMapContext.html
|   |   |       |   |-- BackingMapManagerContext.html
|   |   |       |   |-- BackingMapManager.html
|   |   |       |   |-- cache
|   |   |       |   |   |-- AbstractBinaryEntryBundler.Bundle.html
|   |   |       |   |   |-- AbstractBinaryEntryBundler.html
|   |   |       |   |   |-- AbstractBundler.Bundle.html
|   |   |       |   |   |-- AbstractBundler.html
|   |   |       |   |   |-- AbstractBundler.Statistics.html
|   |   |       |   |   |-- AbstractCacheLoader.html
|   |   |       |   |   |-- AbstractCacheStore.html
|   |   |       |   |   |-- AbstractEntryBundler.Bundle.html
|   |   |       |   |   |-- AbstractEntryBundler.html
|   |   |       |   |   |-- AbstractEvictionPolicy.html
|   |   |       |   |   |-- AbstractKeyBundler.Bundle.html
|   |   |       |   |   |-- AbstractKeyBundler.html
|   |   |       |   |   |-- AbstractSerializationCache.html
|   |   |       |   |   |-- BackingMapBinaryEntry.html
|   |   |       |   |   |-- BinaryEntryStore.html
|   |   |       |   |   |-- BinaryMemoryCalculator.html
|   |   |       |   |   |-- BinaryStoreCacheStore.html
|   |   |       |   |   |-- BundlingNamedCache.GetBundler.html
|   |   |       |   |   |-- BundlingNamedCache.html
|   |   |       |   |   |-- BundlingNamedCache.PutBundler.html
|   |   |       |   |   |-- BundlingNamedCache.RemoveBundler.html
|   |   |       |   |   |-- CacheEvent.html
|   |   |       |   |   |-- CacheLoaderCacheStore.html
|   |   |       |   |   |-- CacheLoaderCacheStore.Iterable.html
|   |   |       |   |   |-- CacheLoader.html
|   |   |       |   |   |-- CacheMap.html
|   |   |       |   |   |-- CacheStatistics.html
|   |   |       |   |   |-- CacheStore.html
|   |   |       |   |   |-- CacheStoreMap.html
|   |   |       |   |   |-- CacheStoreMap.ReadWriteMap.html
|   |   |       |   |   |-- CachingMap.BackMapListener.html
|   |   |       |   |   |-- CachingMap.FrontMapListener.html
|   |   |       |   |   |-- CachingMap.html
|   |   |       |   |   |-- ConfigurableCacheMap.Entry.html
|   |   |       |   |   |-- ConfigurableCacheMap.EvictionPolicy.html
|   |   |       |   |   |-- ConfigurableCacheMap.html
|   |   |       |   |   |-- ConfigurableCacheMap.UnitCalculator.html
|   |   |       |   |   |-- ContinuousQueryCache.AddListener.html
|   |   |       |   |   |-- ContinuousQueryCache.EventRouter.html
|   |   |       |   |   |-- ContinuousQueryCache.html
|   |   |       |   |   |-- ContinuousQueryCache.RemoveListener.html
|   |   |       |   |   |-- ContinuousQueryCache.ServiceListener.html
|   |   |       |   |   |-- IterableCacheLoader.html
|   |   |       |   |   |-- KeyAssociation.html
|   |   |       |   |   |-- LocalCache.Entry.html
|   |   |       |   |   |-- LocalCache.html
|   |   |       |   |   |-- LocalCache.InternalListener.html
|   |   |       |   |   |-- LocalCache.KeyMask.html
|   |   |       |   |   |-- MapCacheStore.html
|   |   |       |   |   |-- NearCache.BackServiceListener.html
|   |   |       |   |   |-- NearCache.html
|   |   |       |   |   |-- OldCache.Entry.html
|   |   |       |   |   |-- OldCache.EntrySet.html
|   |   |       |   |   |-- OldCache.EvictionPolicy.html
|   |   |       |   |   |-- OldCache.html
|   |   |       |   |   |-- OldCache.InternalEvictionPolicy.html
|   |   |       |   |   |-- OldCache.InternalUnitCalculator.html
|   |   |       |   |   |-- OldCache.KeySet.html
|   |   |       |   |   |-- OldCache.UnitCalculator.html
|   |   |       |   |   |-- OldCache.ValuesCollection.html
|   |   |       |   |   |-- OverflowMap.BackMapListener.html
|   |   |       |   |   |-- OverflowMap.EntrySet.EntrySetIterator.html
|   |   |       |   |   |-- OverflowMap.EntrySet.html
|   |   |       |   |   |-- OverflowMap.ExpirableStatus.html
|   |   |       |   |   |-- OverflowMap.FrontMapListener.html
|   |   |       |   |   |-- OverflowMap.HistoricCacheEvent.html
|   |   |       |   |   |-- OverflowMap.html
|   |   |       |   |   |-- OverflowMap.InternalKeySet.html
|   |   |       |   |   |-- OverflowMap.InternalKeySet.InternalKeySetIterator.html
|   |   |       |   |   |-- OverflowMap.Status.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- ReadonlyNamedCache.html
|   |   |       |   |   |-- ReadWriteBackingMap.BinaryEntryStoreWrapper.html
|   |   |       |   |   |-- ReadWriteBackingMap.CacheLoaderCacheStore.html
|   |   |       |   |   |-- ReadWriteBackingMap.CacheStoreWrapper.html
|   |   |       |   |   |-- ReadWriteBackingMap.Entry.html
|   |   |       |   |   |-- ReadWriteBackingMap.EntrySet.html
|   |   |       |   |   |-- ReadWriteBackingMap.EvictingBackupMap.html
|   |   |       |   |   |-- ReadWriteBackingMap.html
|   |   |       |   |   |-- ReadWriteBackingMap.InternalMapListener.html
|   |   |       |   |   |-- ReadWriteBackingMap.KeySet.html
|   |   |       |   |   |-- ReadWriteBackingMap.ReadLatch.html
|   |   |       |   |   |-- ReadWriteBackingMap.ReadQueue.html
|   |   |       |   |   |-- ReadWriteBackingMap.ReadThread.html
|   |   |       |   |   |-- ReadWriteBackingMap.StoreWrapper.html
|   |   |       |   |   |-- ReadWriteBackingMap.ValuesCollection.html
|   |   |       |   |   |-- ReadWriteBackingMap.WriteQueue.html
|   |   |       |   |   |-- ReadWriteBackingMap.WriteThread.html
|   |   |       |   |   |-- SeppukuMapListener.html
|   |   |       |   |   |-- SerializationCache.EntryAttributes.html
|   |   |       |   |   |-- SerializationCache.EntrySet.Entry.html
|   |   |       |   |   |-- SerializationCache.EntrySet.html
|   |   |       |   |   |-- SerializationCache.html
|   |   |       |   |   |-- SerializationCache.InternalEvictionPolicy.html
|   |   |       |   |   |-- SerializationMap.html
|   |   |       |   |   |-- SerializationPagedCache.FakeBinaryStore.html
|   |   |       |   |   |-- SerializationPagedCache.html
|   |   |       |   |   |-- SerializationPagedCache.PagedBinaryStore.html
|   |   |       |   |   |-- SerializationPagedCache.WrapperBinaryStore.html
|   |   |       |   |   |-- SimpleCacheStatistics.html
|   |   |       |   |   |-- SimpleMemoryCalculator.html
|   |   |       |   |   |-- SimpleOverflowMap.FrontFilterConverter.html
|   |   |       |   |   |-- SimpleOverflowMap.FrontMapListener.html
|   |   |       |   |   |-- SimpleOverflowMap.HashcodeComparator.html
|   |   |       |   |   |-- SimpleOverflowMap.html
|   |   |       |   |   |-- SimpleOverflowMap.KeyIterator.html
|   |   |       |   |   |-- SimpleOverflowMap.Status.html
|   |   |       |   |   |-- SimpleSerializationMap.html
|   |   |       |   |   |-- VersionedBackingMap.CacheStoreWrapper.html
|   |   |       |   |   |-- VersionedBackingMap.html
|   |   |       |   |   |-- VersionedBackingMap.InternalMapListener.html
|   |   |       |   |   |-- VersionedNearCache.html
|   |   |       |   |   |-- VersionedNearCache.VersionCacheListener.html
|   |   |       |   |   `-- WrapperNamedCache.html
|   |   |       |   |-- CacheFactoryBuilder.html
|   |   |       |   |-- CacheFactory.html
|   |   |       |   |-- CacheService.CacheAction.html
|   |   |       |   |-- CacheService.html
|   |   |       |   |-- ClusterException.html
|   |   |       |   |-- Cluster.html
|   |   |       |   |-- Cluster.MemberTimeoutAction.html
|   |   |       |   |-- ClusterPermission.html
|   |   |       |   |-- CompositeAddressProvider.AddressIterator.html
|   |   |       |   |-- CompositeAddressProvider.html
|   |   |       |   |-- CompositeAddressProvider.SingleProvider.html
|   |   |       |   |-- CompressionFilter.DeflaterOutputShell.html
|   |   |       |   |-- CompressionFilter.html
|   |   |       |   |-- CompressionFilter.InflaterInputShell.html
|   |   |       |   |-- ConfigurableAddressProvider.AddressHolder.html
|   |   |       |   |-- ConfigurableAddressProvider.html
|   |   |       |   |-- ConfigurableCacheFactory.html
|   |   |       |   |-- ConfigurableLocalAddressProvider.html
|   |   |       |   |-- ConfigurableQuorumPolicy.ClusterQuorumPolicy.html
|   |   |       |   |-- ConfigurableQuorumPolicy.html
|   |   |       |   |-- ConfigurableQuorumPolicy.MembershipQuorumPolicy.html
|   |   |       |   |-- ConfigurableQuorumPolicy.MembershipQuorumPolicy.QuorumListener.html
|   |   |       |   |-- ConfigurableQuorumPolicy.MembershipQuorumPolicy.QuorumRule.html
|   |   |       |   |-- ConfigurableQuorumPolicy.PartitionedCacheQuorumPolicy.html
|   |   |       |   |-- ConfigurableQuorumPolicy.ProxyQuorumPolicy.html
|   |   |       |   |-- ConfigurableQuorumPolicy.WrapperQuorumPolicy.html
|   |   |       |   |-- DatagramPacketOutputStream.html
|   |   |       |   |-- DefaultCacheFactoryBuilder.html
|   |   |       |   |-- DefaultCacheServer.html
|   |   |       |   |-- DefaultCacheServer.ShutdownProcess.html
|   |   |       |   |-- DefaultConfigurableCacheFactory.CacheInfo.html
|   |   |       |   |-- DefaultConfigurableCacheFactory.html
|   |   |       |   |-- DefaultConfigurableCacheFactory.Manager.html
|   |   |       |   |-- DefaultConfigurableCacheFactory.PartitionedBackingMapManager.html
|   |   |       |   |-- DistributedCacheService.html
|   |   |       |   |-- events
|   |   |       |   |   |-- AbstractEventInterceptor.html
|   |   |       |   |   |-- BackingMapDispatcher.EntryEvent.html
|   |   |       |   |   |-- BackingMapDispatcher.EntryEvent.Type.html
|   |   |       |   |   |-- BackingMapDispatcher.html
|   |   |       |   |   |-- BackingMapDispatcher.InvocationEvent.html
|   |   |       |   |   |-- BackingMapDispatcher.InvocationEvent.Type.html
|   |   |       |   |   |-- EventDispatcher.html
|   |   |       |   |   |-- Event.html
|   |   |       |   |   |-- EventInterceptor.html
|   |   |       |   |   |-- InterceptorRegistry.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- PartitionedServiceDispatcher.html
|   |   |       |   |   |-- PartitionedServiceDispatcher.TransferEvent.html
|   |   |       |   |   `-- PartitionedServiceDispatcher.TransferEvent.Type.html
|   |   |       |   |-- Guardable.html
|   |   |       |   |-- Guardian.GuardContext.html
|   |   |       |   |-- Guardian.html
|   |   |       |   |-- GuardSupport.Context.html
|   |   |       |   |-- GuardSupport.html
|   |   |       |   |-- InetAddressHelper.html
|   |   |       |   |-- InetAddressHelper.RoutableFilter.html
|   |   |       |   |-- InetAddressHelper.SubnetMaskFilter.html
|   |   |       |   |-- Invocable.html
|   |   |       |   |-- InvocableInOrder.html
|   |   |       |   |-- InvocationObserver.html
|   |   |       |   |-- InvocationService.html
|   |   |       |   |-- LoadBalancer.AddressPort.html
|   |   |       |   |-- LoadBalancer.html
|   |   |       |   |-- LoadBalancer.Queue.html
|   |   |       |   |-- LoadBalancer.RequestHandler.html
|   |   |       |   |-- LoadBalancer.ResponseHandler.html
|   |   |       |   |-- LoadBalancer.SocketHandler.html
|   |   |       |   |-- management
|   |   |       |   |   |-- AnnotatedStandardMBean.html
|   |   |       |   |   |-- annotation
|   |   |       |   |   |   |-- Description.html
|   |   |       |   |   |   |-- package-frame.html
|   |   |       |   |   |   |-- package-summary.html
|   |   |       |   |   |   `-- package-tree.html
|   |   |       |   |   |-- MBeanConnector.html
|   |   |       |   |   |-- MBeanHelper.html
|   |   |       |   |   |-- MBeanReference.html
|   |   |       |   |   |-- MBeanServerFinder.html
|   |   |       |   |   |-- NotificationManager.html
|   |   |       |   |   |-- ObjectNameExcludeFilter.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   `-- Registry.html
|   |   |       |   |-- MemberEvent.html
|   |   |       |   |-- Member.html
|   |   |       |   |-- MemberIdentity.html
|   |   |       |   |-- MemberListener.html
|   |   |       |   |-- NamedCache.html
|   |   |       |   |-- NonBlockingTcpDatagramSocket.html
|   |   |       |   |-- NonBlockingTcpDatagramSocket.Impl.html
|   |   |       |   |-- OperationalContext.html
|   |   |       |   |-- package-frame.html
|   |   |       |   |-- package-summary.html
|   |   |       |   |-- package-tree.html
|   |   |       |   |-- partition
|   |   |       |   |   |-- BroadKeyPartitioningStrategy.html
|   |   |       |   |   |-- DefaultKeyAssociator.html
|   |   |       |   |   |-- DefaultKeyPartitioningStrategy.html
|   |   |       |   |   |-- DistributionManager.html
|   |   |       |   |   |-- KeyAssociator.html
|   |   |       |   |   |-- KeyPartitioningStrategy.html
|   |   |       |   |   |-- KeyPartitioningStrategy.PartitionAwareKey.html
|   |   |       |   |   |-- MirroringAssignmentStrategy.html
|   |   |       |   |   |-- ObservableSplittingBackingCache.EntrySet.Entry.html
|   |   |       |   |   |-- ObservableSplittingBackingCache.EntrySet.html
|   |   |       |   |   |-- ObservableSplittingBackingCache.html
|   |   |       |   |   |-- ObservableSplittingBackingMap.html
|   |   |       |   |   |-- Ownership.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- PartitionAssignmentStrategy.html
|   |   |       |   |   |-- PartitionAwareBackingMap.html
|   |   |       |   |   |-- PartitionedIterator.html
|   |   |       |   |   |-- PartitionEvent.html
|   |   |       |   |   |-- PartitionListener.html
|   |   |       |   |   |-- PartitionSet.html
|   |   |       |   |   |-- PartitionSplittingBackingMap.AggregatingCacheStatistics.html
|   |   |       |   |   |-- PartitionSplittingBackingMap.html
|   |   |       |   |   |-- PartitionSplittingBackingMap.MapArray.html
|   |   |       |   |   |-- PartitionSplittingBackingMap.MaskedPartitionMap.html
|   |   |       |   |   |-- PartitionSplittingBackingMap.PartitionedIterator.html
|   |   |       |   |   |-- ReadWriteSplittingBackingMap.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.AnalysisContext.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.AnalysisContext.LoadComparator.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.AnalysisContext.NotOwnedFilter.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.AnalysisContext.SafetyFilter.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.AnalysisContext.StrengthComparator.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.AnalysisContext.UnderloadedFilter.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.BackupStrength.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.LoadCalculator.html
|   |   |       |   |   |-- SimpleAssignmentStrategy.SimpleLoadCalculator.html
|   |   |       |   |   `-- SimplePartitionKey.html
|   |   |       |   |-- PartitionedService.html
|   |   |       |   |-- PartitionedService.PartitionedAction.html
|   |   |       |   |-- Ping.html
|   |   |       |   |-- PriorityTask.html
|   |   |       |   |-- proxy
|   |   |       |   |   |-- AbstractProxyServiceLoadBalancer.html
|   |   |       |   |   |-- DefaultProxyServiceLoadBalancer.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- ProxyServiceLoadBalancer.html
|   |   |       |   |   `-- ProxyServiceLoad.html
|   |   |       |   |-- ProxyService.html
|   |   |       |   |-- ProxyService.ProxyAction.html
|   |   |       |   |-- RefreshableAddressProvider.html
|   |   |       |   |-- RefreshableAddressProvider.RefreshThread.html
|   |   |       |   |-- RequestPolicyException.html
|   |   |       |   |-- RequestTimeoutException.html
|   |   |       |   |-- ScopedCacheFactoryBuilder.html
|   |   |       |   |-- ScopeResolver.html
|   |   |       |   |-- security
|   |   |       |   |   |-- AbstractEncryptionFilter.html
|   |   |       |   |   |-- AccessController.html
|   |   |       |   |   |-- AsymmetricEncryptionFilter.html
|   |   |       |   |   |-- AsymmetricEncryptionFilter.IdentityInputStream.html
|   |   |       |   |   |-- AsymmetricEncryptionFilter.IdentityOutputStream.html
|   |   |       |   |   |-- BlockCipherInputStream.html
|   |   |       |   |   |-- BlockCipherOutputStream.html
|   |   |       |   |   |-- ClusterEncryptionFilter.DemultiplexingInputStream.html
|   |   |       |   |   |-- ClusterEncryptionFilter.html
|   |   |       |   |   |-- ClusterEncryptionFilter.MultiplexingOutputStream.html
|   |   |       |   |   |-- DefaultController.html
|   |   |       |   |   |-- DefaultIdentityAsserter.html
|   |   |       |   |   |-- DefaultIdentityTransformer.html
|   |   |       |   |   |-- IdentityAsserter.html
|   |   |       |   |   |-- IdentityTransformer.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   |-- PasswordBasedEncryptionFilter.html
|   |   |       |   |   |-- PeerX509TrustManagerFactory.html
|   |   |       |   |   |-- PeerX509TrustManager.html
|   |   |       |   |   |-- PermissionInfo.html
|   |   |       |   |   |-- SecurityHelper.html
|   |   |       |   |   |-- Security.html
|   |   |       |   |   |-- SecurityProvider.html
|   |   |       |   |   |-- SimpleHandler.html
|   |   |       |   |   `-- SymmetricEncryptionFilter.html
|   |   |       |   |-- ServiceFailurePolicy.html
|   |   |       |   |-- Service.html
|   |   |       |   |-- ServiceInfo.html
|   |   |       |   |-- SocketOptions.html
|   |   |       |   |-- SocketProviderFactory.html
|   |   |       |   |-- SocketProvider.html
|   |   |       |   |-- SystemSocketProvider.html
|   |   |       |   |-- TcpDatagramSocket.html
|   |   |       |   |-- TcpDatagramSocket.Impl.html
|   |   |       |   |-- TcpSocketProvider.html
|   |   |       |   |-- WrapperCacheService.html
|   |   |       |   |-- WrapperInvocationService.html
|   |   |       |   |-- WrapperSelector.html
|   |   |       |   |-- WrapperSelector.KeySet.html
|   |   |       |   |-- WrapperSelector.WrapperSelectableChannel.html
|   |   |       |   |-- WrapperSelector.WrapperSelectionKey.html
|   |   |       |   |-- WrapperServerSocketChannel.html
|   |   |       |   |-- WrapperServerSocket.html
|   |   |       |   |-- WrapperService.html
|   |   |       |   |-- WrapperSocketChannel.html
|   |   |       |   |-- WrapperSocket.html
|   |   |       |   `-- WrapperSocketProvider.html
|   |   |       |-- run
|   |   |       |   |-- jca
|   |   |       |   |   |-- CacheAdapter.CacheConnectionSpec.html
|   |   |       |   |   |-- CacheAdapter.html
|   |   |       |   |   |-- package-frame.html
|   |   |       |   |   |-- package-summary.html
|   |   |       |   |   |-- package-tree.html
|   |   |       |   |   `-- SimpleValidator.html
|   |   |       |   `-- xml
|   |   |       |       |-- ArrayAdapter.html
|   |   |       |       |-- CollectionAdapter.html
|   |   |       |       |-- DateFormatAdapter.html
|   |   |       |       |-- DateTimeAdapter.html
|   |   |       |       |-- Identifiable.html
|   |   |       |       |-- IterableAdapter.html
|   |   |       |       |-- MapAdapter.html
|   |   |       |       |-- package-frame.html
|   |   |       |       |-- package-summary.html
|   |   |       |       |-- package-tree.html
|   |   |       |       |-- PrimitiveArrayAdapter.BooleanArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.ByteArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.CharArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.DoubleArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.FloatArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.IntArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.LongArrayAdapter.html
|   |   |       |       |-- PrimitiveArrayAdapter.ShortArrayAdapter.html
|   |   |       |       |-- PropertyAdapter.html
|   |   |       |       |-- QNameAdapter.html
|   |   |       |       |-- RestrictedStringAdapter.html
|   |   |       |       |-- SaxParser.html
|   |   |       |       |-- SaxParser.ValidationHandler.html
|   |   |       |       |-- SerializableAdapter.html
|   |   |       |       |-- SimpleAdapter.BigDecimalAdapter.html
|   |   |       |       |-- SimpleAdapter.BigIntegerAdapter.html
|   |   |       |       |-- SimpleAdapter.BooleanAdapter.html
|   |   |       |       |-- SimpleAdapter.ByteAdapter.html
|   |   |       |       |-- SimpleAdapter.CharAdapter.html
|   |   |       |       |-- SimpleAdapter.DateAdapter.html
|   |   |       |       |-- SimpleAdapter.DoubleAdapter.html
|   |   |       |       |-- SimpleAdapter.FloatAdapter.html
|   |   |       |       |-- SimpleAdapter.html
|   |   |       |       |-- SimpleAdapter.IntAdapter.html
|   |   |       |       |-- SimpleAdapter.LongAdapter.html
|   |   |       |       |-- SimpleAdapter.OldDateAdapter.html
|   |   |       |       |-- SimpleAdapter.ShortAdapter.html
|   |   |       |       |-- SimpleAdapter.StringAdapter.html
|   |   |       |       |-- SimpleAdapter.SystemTimeAdapter.html
|   |   |       |       |-- SimpleAdapter.TimeAdapter.html
|   |   |       |       |-- SimpleAdapter.TimestampAdapter.html
|   |   |       |       |-- SimpleDocument.html
|   |   |       |       |-- SimpleElement.AttributeMap.Entry.html
|   |   |       |       |-- SimpleElement.AttributeMap.EntrySet.EntrySetIterator.html
|   |   |       |       |-- SimpleElement.AttributeMap.EntrySet.html
|   |   |       |       |-- SimpleElement.AttributeMap.html
|   |   |       |       |-- SimpleElement.ElementIterator.html
|   |   |       |       |-- SimpleElement.ElementList.html
|   |   |       |       |-- SimpleElement.html
|   |   |       |       |-- SimpleParser.html
|   |   |       |       |-- SimpleValue.html
|   |   |       |       |-- UriSerializable.html
|   |   |       |       |-- XmlBean.BeanInfo.html
|   |   |       |       |-- XmlBean.html
|   |   |       |       |-- XmlConfigurable.html
|   |   |       |       |-- XmlDocument.html
|   |   |       |       |-- XmlElementAdapter.html
|   |   |       |       |-- XmlElement.html
|   |   |       |       |-- XmlHelper.html
|   |   |       |       |-- XmlHelper.ParameterResolver.html
|   |   |       |       |-- XmlSerializableAdapter.html
|   |   |       |       |-- XmlSerializable.html
|   |   |       |       `-- XmlValue.html
|   |   |       `-- util
|   |   |           |-- AbstractByteSequence.AggregateByteSequence.html
|   |   |           |-- AbstractByteSequence.html
|   |   |           |-- AbstractByteSequence.PartialByteSequence.html
|   |   |           |-- AbstractKeyBasedMap.EntrySet.Entry.html
|   |   |           |-- AbstractKeyBasedMap.EntrySet.EntrySetIterator.html
|   |   |           |-- AbstractKeyBasedMap.EntrySet.html
|   |   |           |-- AbstractKeyBasedMap.html
|   |   |           |-- AbstractKeyBasedMap.KeySet.html
|   |   |           |-- AbstractKeyBasedMap.ValuesCollection.html
|   |   |           |-- AbstractKeyBasedMap.ValuesCollection.ValuesIterator.html
|   |   |           |-- AbstractKeySetBasedMap.EntrySet.html
|   |   |           |-- AbstractKeySetBasedMap.html
|   |   |           |-- AbstractKeySetBasedMap.KeyIterator.html
|   |   |           |-- AbstractKeySetBasedMap.KeySet.html
|   |   |           |-- AbstractKeySetBasedMap.ValuesCollection.html
|   |   |           |-- AbstractLongArray.html
|   |   |           |-- AbstractMapListener.html
|   |   |           |-- AbstractSparseArray.Crawler.html
|   |   |           |-- AbstractSparseArray.html
|   |   |           |-- AbstractSparseArray.Node.html
|   |   |           |-- AbstractStableIterator.html
|   |   |           |-- aggregator
|   |   |           |   |-- AbstractAggregator.html
|   |   |           |   |-- AbstractBigDecimalAggregator.html
|   |   |           |   |-- AbstractComparableAggregator.html
|   |   |           |   |-- AbstractDoubleAggregator.html
|   |   |           |   |-- AbstractLongAggregator.html
|   |   |           |   |-- BigDecimalAverage.html
|   |   |           |   |-- BigDecimalMax.html
|   |   |           |   |-- BigDecimalMin.html
|   |   |           |   |-- BigDecimalSum.html
|   |   |           |   |-- ComparableMax.html
|   |   |           |   |-- ComparableMin.html
|   |   |           |   |-- CompositeAggregator.html
|   |   |           |   |-- CompositeAggregator.Parallel.html
|   |   |           |   |-- Count.html
|   |   |           |   |-- DistinctValues.html
|   |   |           |   |-- DoubleAverage.html
|   |   |           |   |-- DoubleMax.html
|   |   |           |   |-- DoubleMin.html
|   |   |           |   |-- DoubleSum.html
|   |   |           |   |-- GroupAggregator.html
|   |   |           |   |-- GroupAggregator.Parallel.html
|   |   |           |   |-- LongMax.html
|   |   |           |   |-- LongMin.html
|   |   |           |   |-- LongSum.html
|   |   |           |   |-- package-frame.html
|   |   |           |   |-- package-summary.html
|   |   |           |   |-- package-tree.html
|   |   |           |   |-- PriorityAggregator.html
|   |   |           |   |-- QueryRecorder.html
|   |   |           |   |-- QueryRecorder.RecordType.html
|   |   |           |   `-- ReducerAggregator.html
|   |   |           |-- AnyEvent.html
|   |   |           |-- AnyListener.html
|   |   |           |-- AssertionException.html
|   |   |           |-- Base.CommonMonitor.html
|   |   |           |-- Base.html
|   |   |           |-- Base.LoggingWriter.html
|   |   |           |-- Base.StackFrame.html
|   |   |           |-- BinaryEntry.html
|   |   |           |-- Binary.html
|   |   |           |-- BinaryRadixTree.AllKeyIterator.html
|   |   |           |-- BinaryRadixTree.BinaryLongMap.html
|   |   |           |-- BinaryRadixTree.FilteredIterator.html
|   |   |           |-- BinaryRadixTree.html
|   |   |           |-- BinaryRadixTree.KeyIterator.html
|   |   |           |-- BinaryWriteBuffer.html
|   |   |           |-- BitHelper.html
|   |   |           |-- ByteSequence.html
|   |   |           |-- CacheCollator.html
|   |   |           |-- ChainedEnumerator.html
|   |   |           |-- ChainedMap.EntrySet.html
|   |   |           |-- ChainedMap.html
|   |   |           |-- CircularArrayList.html
|   |   |           |-- ClassFilter.html
|   |   |           |-- ClassHelper.html
|   |   |           |-- CollectionHelper.html
|   |   |           |-- comparator
|   |   |           |   |-- ChainedComparator.html
|   |   |           |   |-- EntryAwareComparator.html
|   |   |           |   |-- EntryComparator.html
|   |   |           |   |-- ExtractorComparator.html
|   |   |           |   |-- InverseComparator.html
|   |   |           |   |-- package-frame.html
|   |   |           |   |-- package-summary.html
|   |   |           |   |-- package-tree.html
|   |   |           |   |-- QueryMapComparator.html
|   |   |           |   `-- SafeComparator.html
|   |   |           |-- CompositeKey.html
|   |   |           |-- ConcurrentMap.html
|   |   |           |-- ConditionalIndex.html
|   |   |           |-- Continuation.html
|   |   |           |-- Controllable.html
|   |   |           |-- ConverterCollections.AbstractConverterEntry.html
|   |   |           |-- ConverterCollections.ConverterCacheEvent.html
|   |   |           |-- ConverterCollections.ConverterCacheMap.html
|   |   |           |-- ConverterCollections.ConverterCollection.html
|   |   |           |-- ConverterCollections.ConverterConcurrentMap.html
|   |   |           |-- ConverterCollections.ConverterEntry.html
|   |   |           |-- ConverterCollections.ConverterEntrySet.ConverterEntry.html
|   |   |           |-- ConverterCollections.ConverterEntrySet.ConverterIterator.html
|   |   |           |-- ConverterCollections.ConverterEntrySet.html
|   |   |           |-- ConverterCollections.ConverterInvocableMap.html
|   |   |           |-- ConverterCollections.ConverterList.html
|   |   |           |-- ConverterCollections.ConverterListIterator.html
|   |   |           |-- ConverterCollections.ConverterMapEvent.ConverterMapEventBinaryEntry.html
|   |   |           |-- ConverterCollections.ConverterMapEvent.ConverterMapEventEntry.html
|   |   |           |-- ConverterCollections.ConverterMapEvent.html
|   |   |           |-- ConverterCollections.ConverterMap.html
|   |   |           |-- ConverterCollections.ConverterMapListener.html
|   |   |           |-- ConverterCollections.ConverterNamedCache.html
|   |   |           |-- ConverterCollections.ConverterObservableMap.html
|   |   |           |-- ConverterCollections.ConverterQueryMap.html
|   |   |           |-- ConverterCollections.ConverterSet.html
|   |   |           |-- ConverterCollections.ConverterSortedMap.html
|   |   |           |-- ConverterCollections.ConverterSortedSet.html
|   |   |           |-- ConverterCollections.html
|   |   |           |-- ConverterEnumerator.html
|   |   |           |-- Converter.html
|   |   |           |-- CopyOnWriteLongArray.html
|   |   |           |-- CopyOnWriteLongArray.UnmodifiableIterator.html
|   |   |           |-- Daemon.DaemonWorker.html
|   |   |           |-- Daemon.html
|   |   |           |-- DaemonThreadFactory.html
|   |   |           |-- DeltaSet.DeltaIterator.html
|   |   |           |-- DeltaSet.html
|   |   |           |-- Dequeue.html
|   |   |           |-- Disposable.html
|   |   |           |-- EntrySetMap.html
|   |   |           |-- EnumerationIterator.html
|   |   |           |-- ExternalizableHelper.DefaultObjectStreamFactory.html
|   |   |           |-- ExternalizableHelper.FormatAwareCompressor.html
|   |   |           |-- ExternalizableHelper.html
|   |   |           |-- ExternalizableHelper.IntDecoratedObject.html
|   |   |           |-- ExternalizableHelper.ShieldedDataOutputStream.html
|   |   |           |-- ExternalizableHelper.Shielded.html
|   |   |           |-- ExternalizableHelper.ShieldedInputStream.html
|   |   |           |-- ExternalizableHelper.ShieldedObjectOutputStream.html
|   |   |           |-- ExternalizableHelper.ShieldedOutputStream.html
|   |   |           |-- ExternalizableHelper.SimpleXmlBeanClassCache.html
|   |   |           |-- ExternalizableHelper.XmlBeanClassCache.html
|   |   |           |-- extractor
|   |   |           |   |-- AbstractCompositeExtractor.html
|   |   |           |   |-- AbstractExtractor.html
|   |   |           |   |-- AbstractUpdater.html
|   |   |           |   |-- ChainedExtractor.html
|   |   |           |   |-- ComparisonValueExtractor.html
|   |   |           |   |-- CompositeUpdater.html
|   |   |           |   |-- ConditionalExtractor.html
|   |   |           |   |-- EntryExtractor.html
|   |   |           |   |-- IdentityExtractor.html
|   |   |           |   |-- IndexAwareExtractor.html
|   |   |           |   |-- KeyExtractor.html
|   |   |           |   |-- MultiExtractor.html
|   |   |           |   |-- package-frame.html
|   |   |           |   |-- package-summary.html
|   |   |           |   |-- package-tree.html
|   |   |           |   |-- PofExtractor.html
|   |   |           |   |-- PofUpdater.html
|   |   |           |   |-- ReflectionExtractor.html
|   |   |           |   `-- ReflectionUpdater.html
|   |   |           |-- filter
|   |   |           |   |-- AbstractQueryRecorderFilter.html
|   |   |           |   |-- AllFilter.html
|   |   |           |   |-- AlwaysFilter.html
|   |   |           |   |-- AndFilter.html
|   |   |           |   |-- AnyFilter.html
|   |   |           |   |-- ArrayFilter.html
|   |   |           |   |-- ArrayFilter.WeightedFilter.html
|   |   |           |   |-- BetweenFilter.html
|   |   |           |   |-- ComparisonFilter.html
|   |   |           |   |-- ContainsAllFilter.html
|   |   |           |   |-- ContainsAnyFilter.html
|   |   |           |   |-- ContainsFilter.html
|   |   |           |   |-- EntryFilter.html
|   |   |           |   |-- EqualsFilter.html
|   |   |           |   |-- ExtractorFilter.html
|   |   |           |   |-- FilterTrigger.html
|   |   |           |   |-- GreaterEqualsFilter.html
|   |   |           |   |-- GreaterFilter.html
|   |   |           |   |-- IndexAwareFilter.html
|   |   |           |   |-- InFilter.html
|   |   |           |   |-- InKeySetFilter.html
|   |   |           |   |-- IsNotNullFilter.html
|   |   |           |   |-- IsNullFilter.html
|   |   |           |   |-- KeyAssociatedFilter.html
|   |   |           |   |-- KeyFilter.html
|   |   |           |   |-- LessEqualsFilter.html
|   |   |           |   |-- LessFilter.html
|   |   |           |   |-- LikeFilter.html
|   |   |           |   |-- LimitFilter.html
|   |   |           |   |-- MapEventFilter.html
|   |   |           |   |-- MapEventTransformerFilter.html
|   |   |           |   |-- NeverFilter.html
|   |   |           |   |-- NotEqualsFilter.html
|   |   |           |   |-- NotFilter.html
|   |   |           |   |-- OrFilter.html
|   |   |           |   |-- package-frame.html
|   |   |           |   |-- package-summary.html
|   |   |           |   |-- package-tree.html
|   |   |           |   |-- PartitionedFilter.html
|   |   |           |   |-- PresentFilter.html
|   |   |           |   |-- PriorityFilter.html
|   |   |           |   |-- QueryRecorderFilter.html
|   |   |           |   |-- RegexFilter.html
|   |   |           |   |-- ValueChangeEventFilter.html
|   |   |           |   |-- WrapperQueryRecorderFilter.html
|   |   |           |   `-- XorFilter.html
|   |   |           |-- FilterBuildingException.html
|   |   |           |-- FilterEnumerator.html
|   |   |           |-- Filter.html
|   |   |           |-- Gate.html
|   |   |           |-- HashHelper.html
|   |   |           |-- ImmutableArrayList.html
|   |   |           |-- ImmutableArrayList.ListView.html
|   |   |           |-- ImmutableArrayList.SetView.html
|   |   |           |-- ImmutableArrayList.SortedSetView.html
|   |   |           |-- ImmutableMultiList.html
|   |   |           |-- ImmutableMultiList.ListView.html
|   |   |           |-- ImmutableMultiList.MultiIterator.html
|   |   |           |-- ImmutableMultiList.SetView.html
|   |   |           |-- InflatableCollection.html
|   |   |           |-- InflatableCollection.InflatedCollection.html
|   |   |           |-- InflatableList.html
|   |   |           |-- InflatableSet.html
|   |   |           |-- InvocableMap.EntryAggregator.html
|   |   |           |-- InvocableMap.Entry.html
|   |   |           |-- InvocableMap.EntryProcessor.html
|   |   |           |-- InvocableMapHelper.html
|   |   |           |-- InvocableMapHelper.IndexAdapter.html
|   |   |           |-- InvocableMapHelper.SimpleEntry.html
|   |   |           |-- InvocableMap.html
|   |   |           |-- InvocableMap.ParallelAwareAggregator.html
|   |   |           |-- IteratorEnumerator.html
|   |   |           |-- Listeners.html
|   |   |           |-- ListMap.html
|   |   |           |-- LiteMap.EntryIterator.html
|   |   |           |-- LiteMap.EntrySet.html
|   |   |           |-- LiteMap.html
|   |   |           |-- LiteSet.html
|   |   |           |-- LongArray.html
|   |   |           |-- LongArray.Iterator.html
|   |   |           |-- MapEvent.html
|   |   |           |-- MapEventTransformer.html
|   |   |           |-- MapIndex.html
|   |   |           |-- MapListener.html
|   |   |           |-- MapListenerSupport.FilterEvent.html
|   |   |           |-- MapListenerSupport.html
|   |   |           |-- MapListenerSupport.SynchronousListener.html
|   |   |           |-- MapListenerSupport.WrapperSynchronousListener.html
|   |   |           |-- MapSet.html
|   |   |           |-- MapTrigger.Entry.html
|   |   |           |-- MapTrigger.html
|   |   |           |-- MapTriggerListener.html
|   |   |           |-- MultiplexingMapListener.html
|   |   |           |-- NullFilter.html
|   |   |           |-- NullImplementation.html
|   |   |           |-- NullImplementation.NullActionPolicy.html
|   |   |           |-- NullImplementation.NullBackingMapManagerContext.html
|   |   |           |-- NullImplementation.NullCacheStore.html
|   |   |           |-- NullImplementation.NullContinuation.html
|   |   |           |-- NullImplementation.NullConverter.html
|   |   |           |-- NullImplementation.NullDeltaCompressor.html
|   |   |           |-- NullImplementation.NullEntryProcessor.html
|   |   |           |-- NullImplementation.NullEnumerator.html
|   |   |           |-- NullImplementation.NullFlatRegistry.html
|   |   |           |-- NullImplementation.NullMap.html
|   |   |           |-- NullImplementation.NullObservableMap.html
|   |   |           |-- NullImplementation.NullOutputStream.html
|   |   |           |-- NullImplementation.NullPofContext.html
|   |   |           |-- NullImplementation.NullPofHandler.html
|   |   |           |-- NullImplementation.NullSet.html
|   |   |           |-- NullImplementation.NullValueExtractor.html
|   |   |           |-- NullImplementation.NullWriter.html
|   |   |           |-- ObservableHashMap.Entry.html
|   |   |           |-- ObservableHashMap.html
|   |   |           |-- ObservableMap.html
|   |   |           |-- package-frame.html
|   |   |           |-- package-summary.html
|   |   |           |-- package-tree.html
|   |   |           |-- PagedIterator.Advancer.html
|   |   |           |-- PagedIterator.html
|   |   |           |-- PrimitiveSparseArray.html
|   |   |           |-- PrimitiveSparseArray.Iterator.html
|   |   |           |-- PrimitiveSparseArray.PrimitiveNode.html
|   |   |           |-- processor
|   |   |           |   |-- AbstractProcessor.html
|   |   |           |   |-- CompositeProcessor.html
|   |   |           |   |-- ConditionalProcessor.html
|   |   |           |   |-- ConditionalPutAll.html
|   |   |           |   |-- ConditionalPut.html
|   |   |           |   |-- ConditionalRemove.html
|   |   |           |   |-- ExtractorProcessor.html
|   |   |           |   |-- NumberIncrementor.html
|   |   |           |   |-- NumberMultiplier.html
|   |   |           |   |-- package-frame.html
|   |   |           |   |-- package-summary.html
|   |   |           |   |-- package-tree.html
|   |   |           |   |-- PreloadRequest.html
|   |   |           |   |-- PriorityProcessor.html
|   |   |           |   |-- PropertyManipulator.html
|   |   |           |   |-- PropertyProcessor.html
|   |   |           |   |-- UpdaterProcessor.html
|   |   |           |   |-- VersionedPutAll.html
|   |   |           |   `-- VersionedPut.html
|   |   |           |-- QueryContext.html
|   |   |           |-- QueryHelper.html
|   |   |           |-- QueryMap.Entry.html
|   |   |           |-- QueryMap.html
|   |   |           |-- QueryRecord.html
|   |   |           |-- QueryRecord.PartialResult.ExplainStep.html
|   |   |           |-- QueryRecord.PartialResult.html
|   |   |           |-- QueryRecord.PartialResult.IndexLookupRecord.html
|   |   |           |-- QueryRecord.PartialResult.RecordableStep.html
|   |   |           |-- QueryRecord.PartialResult.Step.html
|   |   |           |-- QueryRecord.PartialResult.TraceStep.html
|   |   |           |-- RecyclingLinkedList.html
|   |   |           |-- RecyclingLinkedList.Node.html
|   |   |           |-- RestrictedCollections.html
|   |   |           |-- RestrictedCollections.RestrictedCollection.html
|   |   |           |-- RestrictedCollections.RestrictedEntrySet.html
|   |   |           |-- RestrictedCollections.RestrictedEntrySet.RestrictedEntry.html
|   |   |           |-- RestrictedCollections.RestrictedEntrySet.RestrictedIterator.html
|   |   |           |-- RestrictedCollections.RestrictedList.html
|   |   |           |-- RestrictedCollections.RestrictedListIterator.html
|   |   |           |-- RestrictedCollections.RestrictedMap.html
|   |   |           |-- RestrictedCollections.RestrictedSet.html
|   |   |           |-- RestrictedCollections.RestrictedSortedMap.html
|   |   |           |-- RestrictedCollections.RestrictedSortedSet.html
|   |   |           |-- SafeClock.html
|   |   |           |-- SafeHashMap.Entry.html
|   |   |           |-- SafeHashMap.EntrySet.EntrySetIterator.html
|   |   |           |-- SafeHashMap.EntrySet.html
|   |   |           |-- SafeHashMap.html
|   |   |           |-- SafeHashMap.KeySet.html
|   |   |           |-- SafeHashMap.ValuesCollection.html
|   |   |           |-- SafeHashSet.html
|   |   |           |-- SafeLinkedList.html
|   |   |           |-- SafeLinkedList.Node.html
|   |   |           |-- SafeSortedMap.BaseEntryNode.html
|   |   |           |-- SafeSortedMap.EntryNode.html
|   |   |           |-- SafeSortedMap.EntryNode.MapEntry.html
|   |   |           |-- SafeSortedMap.html
|   |   |           |-- SafeSortedMap.IndexNode.html
|   |   |           |-- SafeSortedMap.SkipNode.html
|   |   |           |-- SafeSortedMap.Split.html
|   |   |           |-- SafeSortedMap.ViewMap.EntryIterator.html
|   |   |           |-- SafeSortedMap.ViewMap.EntrySet.html
|   |   |           |-- SafeSortedMap.ViewMap.html
|   |   |           |-- SegmentedConcurrentMap.ConditionalRemoveAction.html
|   |   |           |-- SegmentedConcurrentMap.ContentionObserver.html
|   |   |           |-- SegmentedConcurrentMap.html
|   |   |           |-- SegmentedConcurrentMap.LockableEntry.html
|   |   |           |-- SegmentedConcurrentMap.LockAction.html
|   |   |           |-- SegmentedConcurrentMap.RemoveAction.html
|   |   |           |-- SegmentedConcurrentMap.SizeAction.html
|   |   |           |-- SegmentedConcurrentMap.UnlockAction.html
|   |   |           |-- SegmentedHashMap.ContainsValueAction.html
|   |   |           |-- SegmentedHashMap.EntryActionAdapter.html
|   |   |           |-- SegmentedHashMap.EntryAction.html
|   |   |           |-- SegmentedHashMap.Entry.html
|   |   |           |-- SegmentedHashMap.EntrySet.EntrySetIterator.html
|   |   |           |-- SegmentedHashMap.EntrySet.html
|   |   |           |-- SegmentedHashMap.GetEntryAction.html
|   |   |           |-- SegmentedHashMap.html
|   |   |           |-- SegmentedHashMap.InsertAction.html
|   |   |           |-- SegmentedHashMap.IterableEntryAction.html
|   |   |           |-- SegmentedHashMap.KeySet.html
|   |   |           |-- SegmentedHashMap.RemoveAction.html
|   |   |           |-- SegmentedHashMap.Segment.html
|   |   |           |-- SegmentedHashMap.ValuesCollection.html
|   |   |           |-- SegmentedHashSet.html
|   |   |           |-- ServiceEvent.html
|   |   |           |-- Service.html
|   |   |           |-- ServiceListener.html
|   |   |           |-- SimpleEnumerator.html
|   |   |           |-- SimpleLongArray.html
|   |   |           |-- SimpleLongArray.Iterator.html
|   |   |           |-- SimpleMapEntry.html
|   |   |           |-- SimpleMapIndex.html
|   |   |           |-- SimpleMapIndex.IndexCalculator.CalculatorState.html
|   |   |           |-- SimpleMapIndex.IndexCalculator.html
|   |   |           |-- SimpleQueryRecord.html
|   |   |           |-- SimpleQueryRecord.PartialResult.AbstractRecordableStep.html
|   |   |           |-- SimpleQueryRecord.PartialResult.ExplainStep.html
|   |   |           |-- SimpleQueryRecord.PartialResult.html
|   |   |           |-- SimpleQueryRecord.PartialResult.IndexLookupRecord.html
|   |   |           |-- SimpleQueryRecord.PartialResult.Step.html
|   |   |           |-- SimpleQueryRecord.PartialResult.TraceStep.html
|   |   |           |-- SimpleQueryRecordReporter.html
|   |   |           |-- SimpleStack.html
|   |   |           |-- SingleWaiterMultiNotifier.html
|   |   |           |-- Sizable.html
|   |   |           |-- SortedEnumerator.html
|   |   |           |-- SparseArray.html
|   |   |           |-- SparseArray.ObjectNode.html
|   |   |           |-- StringTable.html
|   |   |           |-- SubList.html
|   |   |           |-- SubSet.html
|   |   |           |-- SubSet.SubSetIterator.html
|   |   |           |-- SynchronousListener.html
|   |   |           |-- TaskDaemon.html
|   |   |           |-- TaskDaemon.PeriodicTask.html
|   |   |           |-- ThreadFactory.html
|   |   |           |-- ThreadGate.html
|   |   |           |-- ThreadGateLite.html
|   |   |           |-- ThreadGate.ThreadLocalCounter.html
|   |   |           |-- ThreadLocalObject.html
|   |   |           |-- TransactionMap.html
|   |   |           |-- TransactionMap.Validator.html
|   |   |           |-- transformer
|   |   |           |   |-- ExtractorEventTransformer.html
|   |   |           |   |-- package-frame.html
|   |   |           |   |-- package-summary.html
|   |   |           |   |-- package-tree.html
|   |   |           |   `-- SemiLiteEventTransformer.html
|   |   |           |-- Tree.html
|   |   |           |-- UID.html
|   |   |           |-- UnsafeSubSet.html
|   |   |           |-- UnsafeSubSet.WrapperSet.html
|   |   |           |-- UUID.html
|   |   |           |-- ValueExtractor.html
|   |   |           |-- ValueManipulator.html
|   |   |           |-- ValueUpdater.html
|   |   |           |-- Versionable.html
|   |   |           |-- WrapperCollections.AbstractWrapperCollection.html
|   |   |           |-- WrapperCollections.AbstractWrapperEntry.html
|   |   |           |-- WrapperCollections.AbstractWrapperIterator.html
|   |   |           |-- WrapperCollections.AbstractWrapperList.html
|   |   |           |-- WrapperCollections.AbstractWrapperListIterator.html
|   |   |           |-- WrapperCollections.AbstractWrapperMap.html
|   |   |           |-- WrapperCollections.AbstractWrapperSet.html
|   |   |           |-- WrapperCollections.AbstractWrapperSortedSet.html
|   |   |           |-- WrapperCollections.ConcurrentWrapperCollection.html
|   |   |           |-- WrapperCollections.ConcurrentWrapperEntry.html
|   |   |           |-- WrapperCollections.ConcurrentWrapperEntrySet.html
|   |   |           |-- WrapperCollections.ConcurrentWrapperMap.html
|   |   |           |-- WrapperCollections.ConcurrentWrapperSet.html
|   |   |           |-- WrapperCollections.html
|   |   |           |-- WrapperConcurrentMap.html
|   |   |           |-- WrapperConcurrentMap.Lock.html
|   |   |           |-- WrapperException.html
|   |   |           |-- WrapperObservableMap.html
|   |   |           |-- WrapperObservableMap.InternalListener.html
|   |   |           `-- WrapperReentrantGate.html
|   |   |-- constant-values.html
|   |   |-- help-doc.html
|   |   |-- index-all.html
|   |   |-- index.html
|   |   |-- overview-frame.html
|   |   |-- overview-summary.html
|   |   |-- overview-tree.html
|   |   |-- package-list
|   |   |-- resources
|   |   |   `-- inherit.gif
|   |   |-- serialized-form.html
|   |   `-- stylesheet.css
|   `-- documentation.htm
|-- lib
|   |-- coherence-hibernate.jar
|   |-- coherence.jar
|   |-- coherence-jpa.jar
|   |-- coherence-loadbalancer.jar
|   |-- coherence-mock.jar
|   |-- coherence-rest.jar
|   |-- coherence-toplink.jar
|   |-- coherence-transaction.rar
|   |-- coherence-tx.rar
|   |-- coherence-web.jar
|   |-- coherence-web-spi.war
|   |-- coherence-wlp.jar
|   |-- coherence-work.jar
|   |-- commonj.jar
|   |-- jackson-all-1.8.1.jar
|   |-- je.jar
|   |-- jersey-core-1.8.jar
|   |-- jersey-json-1.8.jar
|   |-- jersey-server-1.8.jar
|   |-- jline.jar
|   |-- licenses.txt
|   |-- security
|   |   |-- coherence-login.jar
|   |   |-- login.config
|   |   |-- permissions.xsd
|   |   `-- security.policy
|   `-- webInstaller.jar
`-- product.xml

miércoles, 2 de noviembre de 2011

[1 de 97]. Para el usuario final, la IU es el sistema.


Post publicado originalmente entre Mayo del 2009 y Enero del 2011 en mi anterior blog.
Pertenece a una serie sobre arquitectura de software, replicaré los comentarios ya que, a mi parecer, son lo más importante de la serie.
Puedes encontrar el listado de esta primera entrega en este enlace.

Cito textualmente:
"For the end user, the interface is the system"
Vinayak Hedge

IMG_7008

Esta es la frase con la que Vinayak Hedge participa en el libro:

Es una frase que creo todos tenemos ya claro, pero de vez en vez se nos olvida, o de menos, le restamos importancia.

El comentario de Vinayak resalta mucho lo relevante que puede ser lograr una IU altamente funcional, que permita una buena interacción y tenga la suficiente "usabilidad" como para que la IU refleje la totalidad del producto de software.

Y esta frase, tambien, encaja perfectamente en el desarrollo y liberación del sistema en cual participo actualmente.

Al usuario final no le importa si debajo de esa IU estas realizando:
  • Transformaciones de excepciones
  • Traducciones de mensajes
  • Invocaciones a WS's...
Tampoco le importa si estamos
  • Apilando mensajes JMS,
  • Ejecutando sistemas legacy,
  • Gestionando la seguridad
No, a el sólo le importa que su comboBox tenga los valores que espera y que el mensaje de respuesta traiga una descripción que él pueda entender. XD

Y la verdad, no tiene porqué importarle :)

El hacer que todo esto sea transparente para el usuario final creo es una de las mayores satisfacciones que podemos llegar a tener.... pero, debo reconocer que a veces sí que dan ganas de escupxxxx decirle amablemente que debería tomar en cuenta la complejidad de un proceso para reconsiderar sus comentarios poco sensibles a nuestro trabajo.

Todo esto me recuerda un comentario repetitivo de uno de mis maestros durante mis estudios de ingeniería (la verdad a estas alturas no puedo más que agradecer todo lo que me enseñaron o me dejaron de enseñar, esa singular combinación de omisiones y presencias ha tenido curiosos efectos secundarios en mi desempeño profesional)

Decía:

"Jóvenes, para evaluar la tarea yo parto del hecho de que todos me entregarán algo que cumpla lo que pedí, si quieren aumentar su calificación... hagan que se vea bien"

A veces se nos olvida que el entregable es TODO lo que compone la aplicación, a veces nos preocupamos por lo que consideramos "mas importante" durante el desarrollo de un producto de software e incluso en esos casos pasamos por alto muchas cosas, lo interesante de esta frase es que, al menos a mí, me recuerda que no debemos perder detalle de nada..... el diablo esta en los detalles dicen por ahí.

¿No creen?

Saludos!!!
---
RuGI
Isaac Ruiz Guerra

Comentarios:

Hola Isaac, como estas?espero que muy bien :-D

Con respecto a lo que comentas, creo que es algo que adolecemos muchos(yo estoy incluido), muchas veces le damos mas importancia al proceso interno que a la interfaz de usuario, pero coincido contigo en que la interfaz lo es todo (al menos para el usuario) y desafortunadamente también es cierto que muchas veces el usuario no mide lo que dice por que es un ignorante de lo que implica lo que esta pidiendo, pero en fin, sigamos adelante y no nos dejemos desanimar :-D

Abrazos, y cuídate mucho, y cuando puedas descansa. :-D

Enviado por Dionisio en mayo 11, 2009 a las 12:15 PM CDT


------------------------------------
Créditos:
La imagen es de: Charlie_tj
------------------------------------
Update 10/01/2013
Lo acabo de ver en coderfacts: