Index: .classpath
===================================================================
--- .classpath	(revision 0)
+++ .classpath	(revision 0)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
Index: src/main/java/org/modeshape/jboss/managed/JBossManagedI18n.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/JBossManagedI18n.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/JBossManagedI18n.java	(revision 0)
@@ -0,0 +1,44 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import org.modeshape.common.i18n.I18n;
+
+/**
+ * The internationalized string constants for the <code>org.modeshape.jboss.managed*</code> packages.
+ */
+public final class JBossManagedI18n {
+
+    public static I18n errorDeterminingIfConnectionIsAlive;
+    public static I18n errorGettingRepositoryFromEngine;
+
+    static {
+        try {
+            I18n.initialize(JBossManagedI18n.class);
+        } catch (final Exception e) {
+            System.err.println(e);
+        }
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedConnectionPool.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedConnectionPool.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedConnectionPool.java	(revision 0)
@@ -0,0 +1,233 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import java.util.concurrent.TimeUnit;
+import org.jboss.managed.api.ManagedOperation.Impact;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementOperation;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+import org.modeshape.common.util.CheckArg;
+import org.modeshape.graph.connector.RepositoryConnectionPool;
+
+/**
+ * A <code>ManagedConnectionPool</code> instance is a JBoss managed object for a {@link RepositoryConnectionPool repository
+ * connection pool}.
+ */
+@ManagementObject( name = "ModeShapeConnectionPool", description = "A ModeShape repository connection pool", componentType = @ManagementComponent( type = "ModeShape", subtype = "ConnectionPool" ), properties = ManagementProperties.EXPLICIT )
+public final class ManagedConnectionPool implements ModeShapeManagedObject {
+
+    /**
+     * The ModeShape object being managed and delegated to (never <code>null</code>).
+     */
+    private final RepositoryConnectionPool connectionPool;
+
+    /**
+     * Creates a JBoss managed object for the specified connection pool.
+     * 
+     * @param connectionPool the connection pool being managed (never <code>null</code>)
+     */
+    public ManagedConnectionPool( RepositoryConnectionPool connectionPool ) {
+        CheckArg.isNotNull(connectionPool, "connectionPool");
+        this.connectionPool = connectionPool;
+    }
+
+    /**
+     * Removes all connections. This is a JBoss managed operation.
+     * 
+     * @return <code>true</code> if successful
+     */
+    @ManagementOperation( description = "Removes all in-use connections from the pool", impact = Impact.WriteOnly )
+    public boolean flush() {
+        // TODO implement flush()
+        return false;
+    }
+
+    /**
+     * Obtains the number of connections available for use. This is a JBoss managed readonly property.
+     * 
+     * @return the number of available connections
+     */
+    @ManagementProperty( name = "Available Connections", description = "The number of available connections", readOnly = true, use = ViewUse.STATISTIC )
+    public int getAvailableCount() {
+        return getMaxSize() - getSize();
+    }
+
+    /**
+     * Obtains the number of connections that have been created. This is a JBoss managed readonly property.
+     * 
+     * @return the number of connections created
+     */
+    @ManagementProperty( name = "Connections Created", description = "The number of connections that have been created", readOnly = true, use = ViewUse.STATISTIC )
+    public long getCreatedCount() {
+        return this.connectionPool.getTotalConnectionsCreated();
+    }
+
+    /**
+     * Obtains the number of connections that have been destroyed. This is a JBoss managed readonly property.
+     * 
+     * @return the number of connections destroyed
+     */
+    @ManagementProperty( name = "Connections Destroyed", description = "The number of connections that have been destroyed", readOnly = true, use = ViewUse.STATISTIC )
+    public long getDestroyedCount() {
+        // TODO how do you calculate connection destroyed count
+        return this.connectionPool.getTotalConnectionsCreated() - getSize();
+    }
+
+    /**
+     * Obtains the total number of times connections have been used. This is a JBoss managed readonly property.
+     * 
+     * @return the number of times
+     */
+    @ManagementProperty( name = "Connections In-use", description = "The number of connections currently being used", readOnly = true, use = ViewUse.STATISTIC )
+    public int getInUseCount() {
+        return this.connectionPool.getInUseCount();
+    }
+
+    @ManagementProperty( name = "In-use High Water Mark", description = "The in-use high water mark", readOnly = true, use = ViewUse.STATISTIC )
+    public int getInUseHighWaterMark() {
+        // TODO implement getInUseHighWaterMark()
+        return 0;
+    }
+
+    /**
+     * Obtains the time a connection can remain idle before being closed. This is a JBoss managed writable property.
+     * 
+     * @return the new connection max idle time
+     */
+    @ManagementProperty( name = "Keep Alive Time", description = "The time in nanonseconds to keep an idle connection alive", readOnly = false, use = ViewUse.RUNTIME )
+    public long getKeepAliveTime() {
+        return this.connectionPool.getKeepAliveTime(TimeUnit.NANOSECONDS);
+    }
+
+    /**
+     * Obtains the number of failed attempts at trying to a connection before throwing an error. This is a JBoss managed writable
+     * property.
+     * 
+     * @return the number of failed attempts to connect
+     */
+    @ManagementProperty( name = "Max Failed Attempts Before Error", description = "The number of failed attempts to establish a connection before throwing an error", readOnly = false, use = ViewUse.RUNTIME )
+    public int getMaxFailedAttemptsBeforeError() {
+        return this.connectionPool.getMaxFailedAttemptsBeforeError();
+    }
+
+    /**
+     * Obtains the maximum size of the pool. This is a JBoss managed writable property.
+     * 
+     * @return the maximum pool size
+     */
+    @ManagementProperty( name = "Max size", description = "The maximum number of connections allowed", readOnly = false, use = ViewUse.RUNTIME )
+    public int getMaxSize() {
+        return this.connectionPool.getMaximumPoolSize();
+    }
+
+    @ManagementProperty( name = "Min size", description = "The minimum number of connections allowed", readOnly = true, use = ViewUse.CONFIGURATION )
+    public int getMinSize() {
+        // TODO implement getMinSize()
+        return 0;
+    }
+
+    /**
+     * Obtains the time to wait for a ping to complete. This is a JBoss managed writable property.
+     * 
+     * @return the time in nanoseconds
+     */
+    @ManagementProperty( name = "Ping Timeout", description = "The time in nanoseconds that ping should wait before timing out and failing", readOnly = false, use = ViewUse.RUNTIME )
+    public long getPingTimeout() {
+        return this.connectionPool.getPingTimeoutInNanos();
+    }
+
+    /**
+     * Obtains the current number of connections. This is a JBoss managed readonly property.
+     * 
+     * @return the number of connections
+     */
+    @ManagementProperty( name = "Total Connections", description = "The total number of connections (in use and available)", readOnly = true, use = ViewUse.STATISTIC )
+    public int getSize() {
+        return this.connectionPool.getCorePoolSize();
+    }
+
+    /**
+     * Indicates if connections should be validated before being used. This is a JBoss managed writable property.
+     * 
+     * @return <code>true</code> if connections are validated before being used
+     */
+    @ManagementProperty( name = "Validate Before Use", description = "Indicates if connections should be validated before being used", readOnly = false, use = ViewUse.RUNTIME )
+    public boolean getValidateConnectionBeforeUse() {
+        return this.connectionPool.getValidateConnectionBeforeUse();
+    }
+
+    /**
+     * Sets the time a connection can remain idle before being closed. This is a JBoss managed property.
+     * 
+     * @param nanos the new connection max idle time (must be non-negative)
+     */
+    public void setKeepAliveTime( long nanos ) {
+        CheckArg.isNonNegative(nanos, "nanos");
+        this.connectionPool.setKeepAliveTime(nanos, TimeUnit.NANOSECONDS);
+    }
+
+    /**
+     * Sets the maximum number of attempts to try and establish a connection. This is a JBoss managed property.
+     * 
+     * @param attempts the new maximum number of attempts (must be non-negative)
+     */
+    public void setMaxFailedAttemptsBeforeError( int attempts ) {
+        CheckArg.isNonNegative(attempts, "attempts");
+        this.connectionPool.setMaxFailedAttemptsBeforeError(attempts);
+    }
+
+    /**
+     * Sets the maximum size of the number of connections allowed. This is a JBoss managed property.
+     * 
+     * @param size the new maximum pool size (must be positive)
+     */
+    public void setSize( int size ) {
+        CheckArg.isPositive(size, "size");
+        this.connectionPool.setMaximumPoolSize(size);
+    }
+
+    /**
+     * Sets the time a ping will wait to complete. This is a JBoss managed property.
+     * 
+     * @param nanos the new time to wait in nanoseconds (must be non-negative)
+     */
+    public void setPingTimout( long nanos ) {
+        CheckArg.isNonNegative(nanos, "nanos");
+        this.connectionPool.setPingTimeout(nanos, TimeUnit.NANOSECONDS);
+    }
+
+    /**
+     * Sets the flag indicating if the connection should be validated before being used. This is a JBoss managed property.
+     * 
+     * @param validate the new value validate flag value
+     */
+    public void setValidateConnectionBeforeUse( boolean validate ) {
+        this.connectionPool.setValidateConnectionBeforeUse(validate);
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedConnector.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedConnector.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedConnector.java	(revision 0)
@@ -0,0 +1,200 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import java.util.concurrent.TimeUnit;
+import org.jboss.managed.api.ManagedOperation.Impact;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementOperation;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+import org.modeshape.common.util.CheckArg;
+import org.modeshape.common.util.Logger;
+import org.modeshape.common.util.Logger.Level;
+import org.modeshape.graph.connector.RepositorySource;
+
+/**
+ * A <code>ManagedConnector</code> instance is a JBoss managed object for a {@link RepositorySource repository source}.
+ */
+@ManagementObject( description = "A ModeShape connector (repository source)", componentType = @ManagementComponent( type = "ModeShape", subtype = "Connector" ), properties = ManagementProperties.EXPLICIT )
+public class ManagedConnector implements ModeShapeManagedObject {
+
+    // TODO get rid of this constructor
+    protected ManagedConnector() {
+        this.connector = null;
+    }
+
+    /****************************** above for temporary testing only ***********************************************************/
+
+    // TODO find other properties using reflection and make them readonly properties
+
+    /**
+     * The ModeShape object being managed and delegated to (never <code>null</code>).
+     */
+    private final RepositorySource connector;
+
+    /**
+     * Creates a JBoss managed object for the specified repository source.
+     * 
+     * @param connector the repository source being managed (never <code>null</code>)
+     */
+    public ManagedConnector( RepositorySource connector ) {
+        CheckArg.isNotNull(connector, "connector");
+        this.connector = connector;
+    }
+
+    /**
+     * Obtains the maximum number of retries to perform on an operation. This is a JBoss managed writable property.
+     * 
+     * @return the number of retries
+     */
+    @ManagementProperty( name = "Retry Limit", description = "The maximum number of retries to perform on an operation", readOnly = false, use = ViewUse.RUNTIME )
+    public int getRetryLimit() {
+        return this.connector.getRetryLimit();
+    }
+
+    /**
+     * Obtains the name of the repository source. This is a JBoss managed readonly property.
+     * 
+     * @return the name of the connector
+     */
+    @ManagementProperty( name = "Connector Name", description = "The name of the repository source", readOnly = true, use = ViewUse.CONFIGURATION )
+    @ManagementObjectID(prefix="ModeShape-")
+    public String getName() {
+        return this.connector.getName();
+    }
+
+    /**
+     * Indicates if the repository source supports creating workspaces. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if created workspaces is supported
+     */
+    @ManagementProperty( name = "Supports Creating Workspaces", description = "Indicates if creating workspaces is allowed", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingCreatingWorkspaces() {
+        return this.connector.getCapabilities().supportsCreatingWorkspaces();
+    }
+
+    /**
+     * Indicates if the repository source supports publishing change events. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if events are supported
+     */
+    @ManagementProperty( name = "Supports Events", description = "Indicates if the publishing of changes events is supported", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingEvents() {
+        return this.connector.getCapabilities().supportsEvents();
+    }
+
+    /**
+     * Indicates if the repository source supports creating locks. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if locking is supported
+     */
+    @ManagementProperty( name = "Supports Locks", description = "Indicates if locks can be created", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingLocks() {
+        return this.connector.getCapabilities().supportsLocks();
+    }
+
+    /**
+     * Indicates if the repository source supports queries. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if queries are supported
+     */
+    @ManagementProperty( name = "Supports Queries", description = "Indicates if queries are supported", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingQueries() {
+        return this.connector.getCapabilities().supportsQueries();
+    }
+
+    /**
+     * Indicates if the repository source supports references by identifiers. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if references are supported
+     */
+    @ManagementProperty( name = "Supports References", description = "Indicates if references by identifiers are supported", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingReferences() {
+        return this.connector.getCapabilities().supportsReferences();
+    }
+
+    /**
+     * Indicates if the repository source supports siblings being able to have the same name. This is a JBoss managed readonly
+     * property.
+     * 
+     * @return <code>true</code> if same name siblings are supported
+     */
+    @ManagementProperty( name = "Supports Same Name Siblings", description = "Indicates if siblings can have the same name", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingSameNameSiblings() {
+        return this.connector.getCapabilities().supportsSameNameSiblings();
+    }
+
+    /**
+     * Indicates if the repository source supports full-text searches. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if searches are supported
+     */
+    @ManagementProperty( name = "Supports Searches", description = "Indicates if full-text searches are supported", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingSearches() {
+        return this.connector.getCapabilities().supportsSearches();
+    }
+
+    /**
+     * Indicates if the repository source supports updates. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if updates are supported
+     */
+    @ManagementProperty( name = "Supports Updates", description = "Indicates if updates can be made to the repository source", readOnly = true, use = ViewUse.CONFIGURATION )
+    public boolean isSupportingUpdates() {
+        return this.connector.getCapabilities().supportsUpdates();
+    }
+
+    /**
+     * Indicates if the connection is valid and alive. This is a JBoss managed operation.
+     * 
+     * @return true if connection can still be used
+     */
+    @ManagementOperation( description = "Indicates if the connection is valid and alive", impact = Impact.ReadOnly )
+    public boolean ping() {
+        try {
+            return this.connector.getConnection().ping(2, TimeUnit.SECONDS);
+        } catch (Exception e) {
+            Logger.getLogger(getClass()).log(Level.ERROR,
+                                             e,
+                                             JBossManagedI18n.errorDeterminingIfConnectionIsAlive,
+                                             this.connector.getName());
+            return false;
+        }
+    }
+
+    /**
+     * Sets the maximum number of retries to perform on an operation. This is a JBoss managed property.
+     * 
+     * @param limit the new retry limit (must be non-negative)
+     */
+    public void setRetryLimit( int limit ) {
+        CheckArg.isNonNegative(limit, "limit");
+        this.connector.setRetryLimit(limit);
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedEngine.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedEngine.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedEngine.java	(revision 0)
@@ -0,0 +1,218 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import javax.jcr.RepositoryException;
+import net.jcip.annotations.Immutable;
+import org.jboss.managed.api.ManagedOperation.Impact;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementOperation;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.modeshape.common.util.CheckArg;
+import org.modeshape.common.util.Logger;
+import org.modeshape.common.util.Logger.Level;
+import org.modeshape.graph.connector.RepositorySource;
+import org.modeshape.jboss.managed.temp.TempEngine;
+import org.modeshape.jcr.JcrEngine;
+import org.modeshape.jcr.JcrRepository;
+
+/**
+ * A <code>ManagedEngine</code> instance is a JBoss managed object for a {@link JcrEngine}.
+ */
+@Immutable
+@ManagementObject( name = "ModeShapeEngine", description = "A ModeShape engine", componentType = @ManagementComponent( type = "ModeShape", subtype = "Engine" ), properties = ManagementProperties.EXPLICIT )
+public final class ManagedEngine implements ModeShapeManagedObject {
+
+    // TODO remove TESTING variable and this constructor
+    private static boolean TESTING = true;
+
+    public ManagedEngine() {
+        this.engine = null;
+    }
+
+    /****************************** above for temporary testing only ***********************************************************/
+
+    // TODO (1) look up engine in JNDI or (2) subclass engine
+
+    /**
+     * The ModeShape object being managed and delegated to (never <code>null</code>).
+     */
+    private final JcrEngine engine;
+
+    /**
+     * The managed object of the sequencing service of the engine.
+     */
+    private ManagedSequencingService sequencingService;
+
+    /**
+     * Creates a JBoss managed object from the specified engine.
+     * 
+     * @param engine the engine being managed (never <code>null</code>)
+     */
+    public ManagedEngine( JcrEngine engine ) {
+        CheckArg.isNotNull(engine, "engine");
+        this.engine = engine;
+    }
+
+    /**
+     * Obtains the managed connectors of this engine. This is a JBoss managed operation.
+     * 
+     * @return an unmodifiable collection of managed connectors (never <code>null</code>)
+     */
+    @ManagementOperation( description = "Obtains the managed connectors of this engine", impact = Impact.ReadOnly )
+    public Collection<ManagedConnector> getConnectors() {
+        if (TESTING) {
+            return TempEngine.INSTANCE.getConnectors();
+        }
+
+        Collection<ManagedConnector> connectors = new ArrayList<ManagedConnector>();
+
+        if (isRunning()) {
+            for (String repositoryName : this.engine.getRepositoryNames()) {
+                RepositorySource repositorySource = this.engine.getRepositorySource(repositoryName);
+                assert (repositorySource != null) : "Repository '" + repositoryName + "' does not exist";
+                connectors.add(new ManagedConnector(repositorySource));
+            }
+        }
+
+        return Collections.unmodifiableCollection(connectors);
+    }
+
+    /**
+     * Obtains the managed repositories of this engine. This is a JBoss managed operation.
+     * 
+     * @return an unmodifiable collection of repositories (never <code>null</code>)
+     */
+    @ManagementOperation( description = "Obtains the managed repositories of this engine", impact = Impact.ReadOnly )
+    public Collection<ManagedRepository> getRepositories() {
+        if (TESTING) {
+            return TempEngine.INSTANCE.getRepositories();
+        }
+
+        Collection<ManagedRepository> repositories = new ArrayList<ManagedRepository>();
+
+        if (isRunning()) {
+            for (String repositoryName : this.engine.getRepositoryNames()) {
+                try {
+                    JcrRepository repository = this.engine.getRepository(repositoryName);
+                    repositories.add(new ManagedRepository(repository));
+                } catch (RepositoryException e) {
+                    Logger.getLogger(getClass()).log(Level.ERROR,
+                                                     e,
+                                                     JBossManagedI18n.errorGettingRepositoryFromEngine,
+                                                     repositoryName);
+                }
+            }
+        }
+
+        return Collections.unmodifiableCollection(repositories);
+    }
+
+    /**
+     * Obtains the managed sequencing service. This is a JBoss managed operation.
+     * 
+     * @return the sequencing service or <code>null</code> if never started
+     */
+    @ManagementOperation( description = "Obtains the managed sequencing service of this engine", impact = Impact.ReadOnly )
+    public ManagedSequencingService getSequencingService() {
+        if (TESTING) {
+            return TempEngine.INSTANCE.getSequencingService();
+        }
+
+        if (isRunning()) {
+            if (this.sequencingService == null) {
+                this.sequencingService = new ManagedSequencingService(this.engine.getSequencingService());
+            }
+        } else {
+            this.sequencingService = null;
+        }
+
+        return this.sequencingService;
+    }
+
+    /**
+     * Indicates if the managed engine is running. This is a JBoss managed operation.
+     * 
+     * @return <code>true</code> if the engine is running
+     */
+    @ManagementOperation( description = "Indicates if this engine is running", impact = Impact.ReadOnly )
+    public boolean isRunning() {
+        if (TESTING) {
+            return true;
+        }
+
+        try {
+            this.engine.getRepositoryService();
+            return true;
+        } catch (IllegalStateException e) {
+            return false;
+        }
+    }
+
+    /**
+     * First {@link #shutdown() shutdowns} the engine and then {@link #start() starts} it back up again. This is a JBoss managed
+     * operation.
+     * 
+     * @see #shutdown()
+     * @see #start()
+     */
+    @ManagementOperation( description = "Restarts this engine", impact = Impact.Lifecycle )
+    public void restart() {
+        shutdown();
+        start();
+    }
+
+    /**
+     * Performs an engine shutdown. This is a JBoss managed operation.
+     * 
+     * @see JcrEngine#shutdown()
+     */
+    @ManagementOperation( description = "Shutdowns this engine", impact = Impact.Lifecycle )
+    public void shutdown() {
+        if (TESTING) {
+            return;
+        }
+
+        this.engine.shutdown();
+    }
+
+    /**
+     * Starts the engine. This is a JBoss managed operation.
+     * 
+     * @see JcrEngine#start()
+     */
+    @ManagementOperation( description = "Starts this engine", impact = Impact.Lifecycle )
+    public void start() {
+        if (TESTING) {
+            return;
+        }
+
+        this.engine.start();
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedFuture.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedFuture.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedFuture.java	(revision 0)
@@ -0,0 +1,38 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import net.jcip.annotations.Immutable;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperties;
+
+/**
+ * 
+ */
+@Immutable
+@ManagementObject( name = "ModeShapeFuture", description = "A ModeShape queud job", componentType = @ManagementComponent( type = "ModeShape", subtype = "Future" ), properties = ManagementProperties.EXPLICIT )
+public final class ManagedFuture implements ModeShapeManagedObject {
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedLock.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedLock.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedLock.java	(revision 0)
@@ -0,0 +1,196 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import java.util.Comparator;
+import net.jcip.annotations.Immutable;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+import org.joda.time.DateTime;
+import org.modeshape.common.util.CheckArg;
+
+/**
+ * The <code>ManagedSession</code> class is a JBoss managed object of a ModeShape lock.
+ */
+@Immutable
+@ManagementObject( description = "A ModeShape node lock", componentType = @ManagementComponent( type = "ModeShape", subtype = "Lock" ), properties = ManagementProperties.EXPLICIT )
+public final class ManagedLock implements ModeShapeManagedObject {
+
+    /**
+     * A sorter for when locks need to be sorted by owner.
+     */
+    public static final Comparator<ManagedLock> SORT_BY_OWNER = new Comparator<ManagedLock>() {
+        @Override
+        public int compare( ManagedLock thisLock,
+                            ManagedLock thatLock ) {
+            return thisLock.getOwner().compareTo(thatLock.getOwner());
+        }
+    };
+
+    /**
+     * The JBoss managed readonly property indicating if this lock is a deep lock.
+     */
+    private final boolean deep;
+
+    /**
+     * The JBoss managed readonly property for the lock's expiration time. The expiration time is never <code>null</code>.
+     */
+    private final DateTime expiration;
+
+    /**
+     * The JBoss managed readonly property for the lock's identifier. The ID is never <code>null</code> and never empty.
+     */
+    private final String id;
+
+    /**
+     * The JBoss managed readonly property for the lock's session identifier. The session ID is never <code>null</code> and never
+     * empty.
+     */
+    private final String sessionId;
+
+    /**
+     * The JBoss managed readonly property for the lock's owner. The owner is never <code>null</code> and never empty.
+     */
+    private final String owner;
+
+    /**
+     * The JBoss managed readonly property indicating if this lock is a session-based lock.
+     */
+    private final boolean sessionBased;
+
+    /**
+     * The JBoss managed readonly property for the lock's workspace name. The workspace name is never <code>null</code> and never
+     * empty.
+     */
+    private final String workspaceName;
+
+    /**
+     * Constructs a managed object for a ModeShape lock.
+     * 
+     * @param workspaceName the name of the lock's workspace (never <code>null</code> and never empty)
+     * @param sessionBased the flag indicating if this lock is session-based
+     * @param sessionId the session ID of this lock (never <code>null</code> and never empty)
+     * @param expiration the lock expiration time (never <code>null</code>)
+     * @param id the lock ID (never <code>null</code> and never empty)
+     * @param owner the owner of the lock (never <code>null</code> or empty)
+     * @param deep the flag indicating if this is a deep lock
+     */
+    public ManagedLock( String workspaceName,
+                        boolean sessionBased,
+                        String sessionId,
+                        DateTime expiration,
+                        String id,
+                        String owner,
+                        boolean deep ) {
+        CheckArg.isNotEmpty(workspaceName, "workspaceName");
+        CheckArg.isNotEmpty(sessionId, "sessionId");
+        CheckArg.isNotNull(expiration, "expiration");
+        CheckArg.isNotEmpty(id, "id");
+        CheckArg.isNotEmpty(owner, "owner");
+
+        this.deep = deep;
+        this.expiration = expiration;
+        this.id = id;
+        this.sessionId = sessionId;
+        this.owner = owner;
+        this.sessionBased = sessionBased;
+        this.workspaceName = workspaceName;
+    }
+
+    /**
+     * Obtains the lock's expiration time. This is a JBoss managed readonly property.
+     * 
+     * @return the time this lock will expire (never <code>null</code>)
+     */
+    @ManagementProperty( name = "Expiration Time", description = "The time this lock will expire", readOnly = true, use = ViewUse.RUNTIME )
+    public DateTime getExpiration() {
+        return this.expiration;
+    }
+
+    /**
+     * Obtains the lock's identifier. This is a JBoss managed readonly property.
+     * 
+     * @return the identifier of this lock (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "Lock ID", description = "The lock's unique identifier", readOnly = true, use = ViewUse.RUNTIME )
+    @ManagementObjectID( prefix = "ModeShapeLock-" )
+    public String getId() {
+        return this.id;
+    }
+
+    /**
+     * Obtains the lock's owner. This is a JBoss managed readonly property.
+     * 
+     * @return the owner of this lock (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "Owner", description = "The owner of the lock", readOnly = true, use = ViewUse.RUNTIME )
+    public String getOwner() {
+        return this.owner;
+    }
+
+    /**
+     * Obtains the session's unique identifier. This is a JBoss managed readonly property.
+     * 
+     * @return the session identifier of this lock (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "Session ID", description = "The identifier of the session this lock belongs to", readOnly = true, use = ViewUse.RUNTIME )
+    public String getSessionId() {
+        return this.sessionId;
+    }
+
+    /**
+     * Obtains the lock's workspace name. This is a JBoss managed readonly property.
+     * 
+     * @return the workspace name of this lock (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "Workspace", description = "The name of the workspace lock belongs to", readOnly = true, use = ViewUse.RUNTIME )
+    public String getWorkspaceName() {
+        return this.workspaceName;
+    }
+
+    /**
+     * Indicates if this lock is a deep lock. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if a deep lock
+     */
+    @ManagementProperty( name = "Deep", description = "Indicates if this lock is a deep lock", readOnly = true, use = ViewUse.RUNTIME )
+    public boolean isDeep() {
+        return this.deep;
+    }
+
+    /**
+     * Indicates if this lock is a session-based lock. This is a JBoss managed readonly property.
+     * 
+     * @return <code>true</code> if a session-based lock
+     */
+    @ManagementProperty( name = "Session-Based", description = "Indicates if this lock is a session-based lock", readOnly = true, use = ViewUse.RUNTIME )
+    public boolean isSessionBased() {
+        return this.sessionBased;
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedRepository.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedRepository.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedRepository.java	(revision 0)
@@ -0,0 +1,233 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import org.jboss.managed.api.ManagedOperation.Impact;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementOperation;
+import org.jboss.managed.api.annotation.ManagementParameter;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+import org.joda.time.DateTime;
+import org.modeshape.common.util.CheckArg;
+import org.modeshape.jcr.JcrRepository;
+import org.modeshape.jcr.JcrRepository.Option;
+
+/**
+ * The <code>ManagedRepository</code> is a JBoss managed object for a {@link JcrRepository repository}.
+ */
+@ManagementObject( name = "ModeShapeRepository", description = "A ModeShape repository", componentType = @ManagementComponent( type = "Repository", subtype = "ModeShape" ), properties = ManagementProperties.EXPLICIT )
+public class ManagedRepository implements ModeShapeManagedObject {
+
+    // TODO get rid of this constructor
+    protected ManagedRepository() {
+        this.repository = null;
+        this.options = null;
+        this.descriptors = null;
+    }
+
+    /****************************** above for temporary testing only ***********************************************************/
+
+    /**
+     * A JBoss managed property for the the configured descriptors of this repository. This map is unmodifiable and never
+     * <code>null</code>.
+     */
+    private final Map<String, String> descriptors;
+
+    /**
+     * A JBoss managed property for configured options of this repository. This map is unmodifiable and never <code>null</code>.
+     */
+    private final Map<String, String> options;
+
+    /**
+     * The ModeShape object being managed and delegated to (never <code>null</code>).
+     */
+    private final JcrRepository repository;
+
+    /**
+     * Creates a JBoss managed object for the specified repository.
+     * 
+     * @param repository the repository being managed (never <code>null</code>)
+     */
+    public ManagedRepository( JcrRepository repository ) {
+        CheckArg.isNotNull(repository, "repository");
+        this.repository = repository;
+
+        // construct options
+        Map<String, String> tempOptions = new HashMap<String, String>();
+
+        for (Entry<Option, String> entry : this.repository.getOptions().entrySet()) {
+            tempOptions.put(entry.getKey().toString(), entry.getValue());
+        }
+
+        this.options = Collections.unmodifiableMap(tempOptions);
+
+        // construct descriptors
+        Map<String, String> tempDescriptors = new HashMap<String, String>();
+
+        for (String descriptorName : this.repository.getDescriptorKeys()) {
+            tempDescriptors.put(descriptorName, this.repository.getDescriptor(descriptorName));
+        }
+
+        this.descriptors = Collections.unmodifiableMap(tempDescriptors);
+    }
+
+    /**
+     * Obtains the descriptors configured for this repository. This is a JBoss managed readonly property.
+     * 
+     * @return the unmodifiable descriptors (never <code>null</code>)
+     */
+    @ManagementProperty( name = "Descriptors", description = "The descriptors defining repository behavior", readOnly = true, use = ViewUse.CONFIGURATION )
+    public Map<String, String> getDescriptors() {
+        return this.descriptors;
+    }
+
+    /**
+     * Obtains the options configured for this repository. This is a JBoss managed readonly property.
+     * 
+     * @return the unmodifiable options (never <code>null</code>)
+     */
+    @ManagementProperty( name = "Options", description = "The options defining repository behavior", readOnly = true, use = ViewUse.CONFIGURATION )
+    public Map<String, String> getOptions() {
+        return this.options;
+    }
+
+    @ManagementProperty( name = "Query Activity", description = "The number of queries executed", use = ViewUse.STATISTIC )
+    public int getQueryActivity() {
+        // TODO implement getQueryActivity() and define in doc what the return value actually represents
+        return 0;
+    }
+
+    @ManagementProperty( name = "Save Activity", description = "The number of nodes saved", use = ViewUse.STATISTIC )
+    public int getSaveActivity() {
+        // TODO implement getSaveActivity() and define in doc what the return value actually represents
+        return 0;
+    }
+
+    @ManagementProperty( name = "Session Activity", description = "The number of sessions created", use = ViewUse.STATISTIC )
+    public Object getSessionActivity() {
+        // TODO implement getSaveActivity() and define in doc what the return value actually represents
+        return 0;
+    }
+
+    /**
+     * Obtains all the repository locks sorted by owner. This is a JBoss managed operation.
+     * 
+     * @return a list of sessions sorted by owner (never <code>null</code>)
+     */
+    @ManagementOperation( description = "Obtains all the managed locks sorted by the owner", impact = Impact.ReadOnly )
+    public List<ManagedLock> listLocks() {
+        return listLocks(ManagedLock.SORT_BY_OWNER);
+    }
+
+    /**
+     * Obtains all the repository locks sorted by the specified sorter.
+     * 
+     * @param lockSorter the lock sorter (never <code>null</code>)
+     * @return a list of locks sorted by the specified lock sorter (never <code>null</code>)
+     */
+    public List<ManagedLock> listLocks( Comparator<ManagedLock> lockSorter ) {
+        CheckArg.isNotNull(lockSorter, "lockSorter");
+
+        // TODO implement listLocks(Comparator)
+        List<ManagedLock> locks = new ArrayList<ManagedLock>();
+
+        // create temporary date
+        for (int i = 0; i < 5; ++i) {
+            locks.add(new ManagedLock("workspace-" + i, true, "sessionId-1", new DateTime(), "id-" + i, "owner-" + i, true));
+        }
+
+        // sort
+        Collections.sort(locks, lockSorter);
+
+        return locks;
+    }
+
+    /**
+     * Obtains all the repository sessions sorted by user name. This is a JBoss managed operation.
+     * 
+     * @return a list of sessions sorted by user name (never <code>null</code>)
+     */
+    @ManagementOperation( description = "Obtains the managed sessions sorted by user name", impact = Impact.ReadOnly )
+    public List<ManagedSession> listSessions() {
+        return listSessions(ManagedSession.SORT_BY_USER);
+    }
+
+    /**
+     * Obtains all the repository sessions sorted by the specified sorter.
+     * 
+     * @param sessionSorter the session sorter (never <code>null</code>)
+     * @return a list of locks sorted by the specified session sorter (never <code>null</code>)
+     */
+    public List<ManagedSession> listSessions( Comparator<ManagedSession> sessionSorter ) {
+        CheckArg.isNotNull(sessionSorter, "sessionSorter");
+
+        // TODO implement listSessions(Comparator)
+        List<ManagedSession> sessions = new ArrayList<ManagedSession>();
+
+        // create temporary date
+        for (int i = 0; i < 5; ++i) {
+            sessions.add(new ManagedSession("workspace-" + i, "userName-" + i, "sessionId-1", new DateTime()));
+        }
+
+        // sort
+        Collections.sort(sessions, sessionSorter);
+
+        return sessions;
+    }
+
+    /**
+     * Removes the lock with the specified identifier. This is a JBoss managed operation.
+     * 
+     * @param lockId the lock's identifier
+     * @return <code>true</code> if the lock was removed
+     */
+    @ManagementOperation( description = "Removes the lock with the specified ID", impact = Impact.WriteOnly, params = {@ManagementParameter( name = "lockId", description = "The lock identifier" )} )
+    public boolean removeLock( String lockId ) {
+        // TODO implement removeLockWithLockToken()
+        return false;
+    }
+
+    /**
+     * Terminates the session with the specified identifier. This is a JBoss managed operation.
+     * 
+     * @param sessionId the session's identifier
+     * @return <code>true</code> if the session was terminated
+     */
+    @ManagementOperation( description = "Terminates the session with the specified ID", impact = Impact.WriteOnly, params = {@ManagementParameter( name = "sessionId", description = "The session identifier" )} )
+    public boolean terminateSession( String sessionId ) {
+        // TODO implement terminateSessionBySessionId()
+        return false;
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedSequencingService.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedSequencingService.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedSequencingService.java	(revision 0)
@@ -0,0 +1,120 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import net.jcip.annotations.Immutable;
+import org.jboss.managed.api.ManagedOperation.Impact;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementOperation;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+import org.modeshape.common.util.CheckArg;
+import org.modeshape.repository.sequencer.SequencingService;
+
+/**
+ * A <code>ManagedSequencingService</code> instance is a JBoss managed object for a {@link SequencingService sequencing service}.
+ */
+@Immutable
+@ManagementObject( name = "ModeShapeSequencingService", description = "A ModeShape sequencing service", componentType = @ManagementComponent( type = "ModeShape", subtype = "SequencingService" ), properties = ManagementProperties.EXPLICIT )
+public class ManagedSequencingService implements ModeShapeManagedObject {
+
+    // TODO add final back into class signature and delete this constructor
+    protected ManagedSequencingService() {
+        this.sequencingService = null;
+    }
+
+    /****************************** above for temporary testing only ***********************************************************/
+
+    /**
+     * The ModeShape object being managed and delegated to (never <code>null</code>).
+     */
+    private final SequencingService sequencingService;
+
+    /**
+     * Creates a JBoss managed object for the specified sequencing service.
+     * 
+     * @param sequencingService the sequencing service being managed (never <code>null</code>)
+     */
+    public ManagedSequencingService( SequencingService sequencingService ) {
+        CheckArg.isNotNull(sequencingService, "sequencingService");
+        this.sequencingService = sequencingService;
+    }
+
+    @ManagementProperty( name = "Job Activity", description = "The number of sequencing jobs executed", readOnly = true, use = ViewUse.STATISTIC )
+    public int getJobActivity() {
+        // TODO implement getJobActivity()
+        return 0;
+    }
+
+    /**
+     * The number of nodes that have been sequenced. This is a JBoss managed readonly property.
+     * 
+     * @return the count of sequenced nodes
+     */
+    @ManagementProperty( name = "Nodes Sequenced", description = "The number of nodes that have been sequenced", readOnly = true, use = ViewUse.STATISTIC )
+    public long getNodesSequencedCount() {
+        return this.sequencingService.getStatistics().getNumberOfNodesSequenced();
+    }
+
+    /**
+     * The number of nodes that have been skipped. This is a JBoss managed readonly property.
+     * 
+     * @return the count of skipped nodes
+     */
+    @ManagementProperty( name = "Nodes Skipped", description = "The number of nodes skipped (not sequenced)", readOnly = true, use = ViewUse.STATISTIC )
+    public long getNodesSkippedCount() {
+        return this.sequencingService.getStatistics().getNumberOfNodesSkipped();
+    }
+
+    @ManagementProperty( name = "Queued Jobs", description = "The number of queued jobs", readOnly = true, use = ViewUse.STATISTIC )
+    public int getQueuedJobCount() {
+        // TODO implement getQueuedJobCount()
+        return 0;
+    }
+
+    /**
+     * Obtains the time the counting of nodes being sequenced and skipped began. This is a JBoss managed readonly property.
+     * 
+     * @return the time the sequencing statistics began
+     */
+    @ManagementProperty( name = "Start Time", description = "The time the sequencing statistics (sequenced, skipped) began", readOnly = true, use = ViewUse.RUNTIME )
+    public long getStartTime() {
+        // TODO this should return localized stringified version of time
+        return this.sequencingService.getStatistics().getStartTime();
+    }
+
+    /**
+     * Obtains a current list of queued sequencing jobs. This is a JBoss managed operation.
+     * 
+     * @return the jobs (never <code>null</code>)
+     */
+    @ManagementOperation( description = "Obtains the list of queued managed jobs", impact = Impact.ReadOnly )
+    public Object listQueuedJobs() {
+        // TODO implement listQueuedJobs()
+        return null;
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ManagedSession.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ManagedSession.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ManagedSession.java	(revision 0)
@@ -0,0 +1,140 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+import java.util.Comparator;
+import net.jcip.annotations.Immutable;
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+import org.joda.time.DateTime;
+import org.modeshape.common.util.CheckArg;
+
+/**
+ * The <code>ManagedSession</code> class is a JBoss managed object of a ModeShape session.
+ */
+@Immutable
+@ManagementObject( description = "A ModeShape session", componentType = @ManagementComponent( type = "ModeShape", subtype = "Session" ), properties = ManagementProperties.EXPLICIT )
+public final class ManagedSession implements ModeShapeManagedObject {
+
+    /**
+     * A sorter for when sessions need to be sorted by user name.
+     */
+    public static final Comparator<ManagedSession> SORT_BY_USER = new Comparator<ManagedSession>() {
+        @Override
+        public int compare( ManagedSession thisSession,
+                            ManagedSession thatSession ) {
+            return thisSession.getUserName().compareTo(thatSession.getUserName());
+        }
+    };
+
+    /**
+     * The JBoss managed readonly property for the session's identifier. The ID is never <code>null</code> and never empty.
+     */
+    private final String id;
+
+    /**
+     * The JBoss managed readonly property for the session's creation time. The time is never <code>null</code>.
+     */
+    private final DateTime timeCreated;
+
+    /**
+     * The JBoss managed readonly property for the session's user name. The user name is never <code>null</code> and never empty.
+     */
+    private final String userName;
+
+    /**
+     * The JBoss managed readonly property for the session's workspace name. The workspace name is never <code>null</code> and
+     * never empty.
+     */
+    private final String workspaceName;
+
+    /**
+     * Constructs a managed object for a ModeShape session.
+     * 
+     * @param workspaceName the session's workspace name (never <code>null</code> and never empty)
+     * @param userName the user name of the session (never <code>null</code> and never empty)
+     * @param id the session's identifier (never <code>null</code> and never empty)
+     * @param timeCreated the session's time of creation (never <code>null</code>)
+     */
+    public ManagedSession( String workspaceName,
+                           String userName,
+                           String id,
+                           DateTime timeCreated ) {
+        CheckArg.isNotEmpty(workspaceName, "workspaceName");
+        CheckArg.isNotEmpty(userName, "userName");
+        CheckArg.isNotEmpty(id, "id");
+        CheckArg.isNotNull(timeCreated, "timeCreated");
+
+        this.id = id;
+        this.timeCreated = timeCreated;
+        this.userName = userName;
+        this.workspaceName = workspaceName;
+    }
+
+    /**
+     * Obtains the session's unique identifier. This is a JBoss managed readonly property.
+     * 
+     * @return the identifier of this session (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "Session ID", description = "The session's unique identifier", readOnly = true, use = ViewUse.RUNTIME )
+    @ManagementObjectID( prefix = "ModeShapeSession-" )
+    public String getId() {
+        return this.id;
+    }
+
+    /**
+     * Obtains the session's creation time. This is a JBoss managed readonly property.
+     * 
+     * @return the time this session was created (never <code>null</code>)
+     */
+    @ManagementProperty( name = "Time Created", description = "The time this session was created", readOnly = true, use = ViewUse.RUNTIME )
+    public DateTime getTimeCreated() {
+        return this.timeCreated;
+    }
+
+    /**
+     * Obtains the session's user name. This is a JBoss managed readonly property.
+     * 
+     * @return the user name of this session (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "User Name", description = "The name of the session's user", readOnly = true, use = ViewUse.RUNTIME )
+    public String getUserName() {
+        return this.userName;
+    }
+
+    /**
+     * Obtains the session's workspace name. This is a JBoss managed readonly property.
+     * 
+     * @return the workspace name of this session (never <code>null</code> and never empty)
+     */
+    @ManagementProperty( name = "Workspace Name", description = "The name of the workspace this session belongs to", readOnly = true, use = ViewUse.RUNTIME )
+    public String getWorkspaceName() {
+        return this.workspaceName;
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/ModeShapeManagedObject.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/ModeShapeManagedObject.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/ModeShapeManagedObject.java	(revision 0)
@@ -0,0 +1,32 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed;
+
+
+/**
+ * A signature indicating the object is a ModeShape JBoss managed object.
+ */
+public interface ModeShapeManagedObject {
+
+}
Index: src/main/java/org/modeshape/jboss/managed/temp/TempEngine.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/temp/TempEngine.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/temp/TempEngine.java	(revision 0)
@@ -0,0 +1,72 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed.temp;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.modeshape.jboss.managed.ManagedConnector;
+import org.modeshape.jboss.managed.ManagedRepository;
+import org.modeshape.jboss.managed.ManagedSequencingService;
+
+/**
+ * 
+ */
+public class TempEngine {
+
+    private static final int COUNT = 5;
+    public static final TempEngine INSTANCE = new TempEngine();
+    public static int id = 0;
+
+    public Collection<ManagedConnector> getConnectors() {
+        Collection<ManagedConnector> connectors = new ArrayList<ManagedConnector>();
+
+        for (int i = 0; i < COUNT; ++i) {
+            connectors.add(new TempManagedConnector(++id));
+        }
+
+        return connectors;
+    }
+
+    public Collection<ManagedRepository> getRepositories() {
+        Collection<ManagedRepository> repositories = new ArrayList<ManagedRepository>();
+
+        for (int i = 0; i < COUNT; ++i) {
+            repositories.add(new TempManagedRepository(++id));
+        }
+
+        return repositories;
+    }
+
+    public ManagedSequencingService getSequencingService() {
+        return new TempManagedSequencingService();
+    }
+
+    /**
+     * Don't allow construction
+     */
+    private TempEngine() {
+        // nothing to do
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/temp/TempManagedConnector.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/temp/TempManagedConnector.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/temp/TempManagedConnector.java	(revision 0)
@@ -0,0 +1,106 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed.temp;
+
+import org.modeshape.graph.connector.RepositorySourceCapabilities;
+import org.modeshape.jboss.managed.ManagedConnector;
+
+/**
+ * 
+ */
+public class TempManagedConnector extends ManagedConnector {
+
+    private final RepositorySourceCapabilities capabilities;
+    private final String name;
+    private final boolean pingResult;
+    private int retryLimit = 0;
+
+    public TempManagedConnector( int id ) {
+        this.name = "Connector-" + id;
+        this.capabilities = new RepositorySourceCapabilities((id % 2 == 0), (id % 3 == 0), (id % 4 == 0), (id % 5 == 0),
+                                                             (id % 2 == 0), (id % 3 == 0), (id % 4 == 0), (id % 5 == 0));
+        this.pingResult = (id % 2 == 0);
+    }
+
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public int getRetryLimit() {
+        return this.retryLimit;
+    }
+
+    @Override
+    public boolean isSupportingCreatingWorkspaces() {
+        return this.capabilities.supportsCreatingWorkspaces();
+    }
+
+    @Override
+    public boolean isSupportingEvents() {
+        return this.capabilities.supportsEvents();
+    }
+
+    @Override
+    public boolean isSupportingLocks() {
+        return this.capabilities.supportsLocks();
+    }
+
+    @Override
+    public boolean isSupportingQueries() {
+        return this.capabilities.supportsQueries();
+    }
+
+    @Override
+    public boolean isSupportingReferences() {
+        return this.capabilities.supportsReferences();
+    }
+
+    @Override
+    public boolean isSupportingSameNameSiblings() {
+        return this.capabilities.supportsSameNameSiblings();
+    }
+
+    @Override
+    public boolean isSupportingSearches() {
+        return this.capabilities.supportsSearches();
+    }
+
+    @Override
+    public boolean isSupportingUpdates() {
+        return this.capabilities.supportsUpdates();
+    }
+
+    @Override
+    public boolean ping() {
+        return this.pingResult;
+    }
+
+    @Override
+    public void setRetryLimit( int limit ) {
+        this.retryLimit = limit;
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/temp/TempManagedRepository.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/temp/TempManagedRepository.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/temp/TempManagedRepository.java	(revision 0)
@@ -0,0 +1,171 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed.temp;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.jcr.Repository;
+import org.joda.time.DateTime;
+import org.modeshape.jboss.managed.ManagedLock;
+import org.modeshape.jboss.managed.ManagedRepository;
+import org.modeshape.jboss.managed.ManagedSession;
+import org.modeshape.jcr.JcrI18n;
+import org.modeshape.jcr.JcrRepository.DefaultOption;
+import org.modeshape.jcr.JcrRepository.Option;
+
+/**
+ * 
+ */
+public class TempManagedRepository extends ManagedRepository {
+
+    private final int id;
+    private final Map<String, String> descriptors;
+    private List<ManagedLock> locks;
+    private final Map<String, String> options;
+    private List<ManagedSession> sessions;
+
+    public TempManagedRepository( int id ) {
+        this.id = id;
+
+        // options
+        Map<String, String> tempOptions = new HashMap<String, String>();
+        tempOptions.put(Option.PROJECT_NODE_TYPES.toString(), DefaultOption.PROJECT_NODE_TYPES);
+        tempOptions.put(Option.JAAS_LOGIN_CONFIG_NAME.toString(), DefaultOption.JAAS_LOGIN_CONFIG_NAME);
+        tempOptions.put(Option.READ_DEPTH.toString(), DefaultOption.READ_DEPTH);
+        tempOptions.put(Option.ANONYMOUS_USER_ROLES.toString(), DefaultOption.ANONYMOUS_USER_ROLES);
+        tempOptions.put(Option.TABLES_INCLUDE_COLUMNS_FOR_INHERITED_PROPERTIES.toString(),
+                        DefaultOption.TABLES_INCLUDE_COLUMNS_FOR_INHERITED_PROPERTIES);
+        tempOptions.put(Option.QUERY_EXECUTION_ENABLED.toString(), DefaultOption.QUERY_EXECUTION_ENABLED);
+        tempOptions.put(Option.QUERY_INDEXES_UPDATED_SYNCHRONOUSLY.toString(), DefaultOption.QUERY_INDEXES_UPDATED_SYNCHRONOUSLY);
+        tempOptions.put(Option.QUERY_INDEX_DIRECTORY.toString(), DefaultOption.QUERY_INDEX_DIRECTORY);
+        tempOptions.put(Option.PERFORM_REFERENTIAL_INTEGRITY_CHECKS.toString(),
+                        DefaultOption.PERFORM_REFERENTIAL_INTEGRITY_CHECKS);
+        this.options = Collections.<String, String>unmodifiableMap(tempOptions);
+
+        // descriptors
+        boolean value = (id % 2 == 0);
+        Map<String, String> tempDescriptors = new HashMap<String, String>();
+        tempDescriptors.put(Repository.LEVEL_1_SUPPORTED, Boolean.toString(value));
+        tempDescriptors.put(Repository.LEVEL_2_SUPPORTED, Boolean.toString(value));
+        tempDescriptors.put(Repository.OPTION_LOCKING_SUPPORTED, Boolean.toString(value));
+        tempDescriptors.put(Repository.OPTION_OBSERVATION_SUPPORTED, Boolean.toString(value));
+        tempDescriptors.put(Repository.OPTION_QUERY_SQL_SUPPORTED, "false"); // not JCR 1.0 SQL
+        tempDescriptors.put(Repository.OPTION_TRANSACTIONS_SUPPORTED, Boolean.toString(!value));
+        tempDescriptors.put(Repository.OPTION_VERSIONING_SUPPORTED, Boolean.toString(value));
+        tempDescriptors.put(Repository.QUERY_XPATH_DOC_ORDER, Boolean.toString(!value));
+        tempDescriptors.put(Repository.QUERY_XPATH_POS_INDEX, Boolean.toString(value));
+        tempDescriptors.put(Repository.REP_NAME_DESC, Boolean.toString(value));
+        tempDescriptors.put(Repository.REP_VENDOR_DESC, Boolean.toString(value));
+        tempDescriptors.put(Repository.REP_VENDOR_URL_DESC, Boolean.toString(value));
+        tempDescriptors.put(Repository.REP_VERSION_DESC, "true");
+        tempDescriptors.put(Repository.SPEC_NAME_DESC, JcrI18n.SPEC_NAME_DESC.text());
+        tempDescriptors.put(Repository.SPEC_VERSION_DESC, "1.0");
+        this.descriptors = Collections.unmodifiableMap(tempDescriptors);
+
+        // sessions
+        this.sessions = new ArrayList<ManagedSession>();
+
+        for (int i = 0; i < 5; ++i) {
+            this.sessions.add(new ManagedSession("workspace-" + this.id, "userName-" + this.id + '.' + i, "session-" + this.id
+                                                                                                          + '.' + i,
+                                                 new DateTime()));
+        }
+
+        // locks
+        this.locks = new ArrayList<ManagedLock>();
+        boolean sessionBased = true;
+        boolean deep = !sessionBased;
+
+        for (int i = 0; i < 5; ++i) {
+            this.locks.add(new ManagedLock("workspace-" + this.id, sessionBased, "session-" + this.id + '.' + i, new DateTime(),
+                                           "lock-" + this.id + '.' + i, "owner-" + this.id + '.' + i, deep));
+            sessionBased = !sessionBased;
+        }
+    }
+
+    @Override
+    public Map<String, String> getDescriptors() {
+        return this.descriptors;
+    }
+
+    @Override
+    public Map<String, String> getOptions() {
+        return this.options;
+    }
+
+    @Override
+    public int getQueryActivity() {
+        // TODO getQueryActivity()
+        return super.getQueryActivity();
+    }
+
+    @Override
+    public int getSaveActivity() {
+        // TODO getSaveActivity()
+        return super.getSaveActivity();
+    }
+
+    @Override
+    public Object getSessionActivity() {
+        // TODO getSessionActivity()
+        return super.getSessionActivity();
+    }
+
+    @Override
+    public List<ManagedLock> listLocks() {
+        return listLocks(ManagedLock.SORT_BY_OWNER);
+    }
+
+    @Override
+    public List<ManagedLock> listLocks( Comparator<ManagedLock> lockSorter ) {
+        Collections.sort(this.locks, lockSorter);
+        return this.locks;
+    }
+
+    @Override
+    public List<ManagedSession> listSessions() {
+        return listSessions(ManagedSession.SORT_BY_USER);
+    }
+
+    @Override
+    public List<ManagedSession> listSessions( Comparator<ManagedSession> sessionSorter ) {
+        Collections.sort(this.sessions, sessionSorter);
+        return this.sessions;
+    }
+
+    @Override
+    public boolean removeLock( String lockId ) {
+        return this.locks.remove(lockId);
+    }
+
+    @Override
+    public boolean terminateSession( String sessionId ) {
+        return this.sessions.remove(sessionId);
+    }
+
+}
Index: src/main/java/org/modeshape/jboss/managed/temp/TempManagedSequencingService.java
===================================================================
--- src/main/java/org/modeshape/jboss/managed/temp/TempManagedSequencingService.java	(revision 0)
+++ src/main/java/org/modeshape/jboss/managed/temp/TempManagedSequencingService.java	(revision 0)
@@ -0,0 +1,74 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors. 
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.modeshape.jboss.managed.temp;
+
+import java.util.Random;
+import org.joda.time.DateTime;
+import org.modeshape.jboss.managed.ManagedSequencingService;
+
+/**
+ * 
+ */
+public class TempManagedSequencingService extends ManagedSequencingService {
+
+    private final Random numberGenerator;
+
+    public TempManagedSequencingService() {
+        this.numberGenerator = new Random();
+    }
+
+    @Override
+    public int getJobActivity() {
+        // TODO implement getJobActivity()
+        return super.getJobActivity();
+    }
+
+    @Override
+    public long getNodesSequencedCount() {
+        return this.numberGenerator.nextLong();
+    }
+
+    @Override
+    public long getNodesSkippedCount() {
+        return this.numberGenerator.nextLong();
+    }
+
+    @Override
+    public int getQueuedJobCount() {
+        // TODO implement getQueuedJobCount()
+        return super.getQueuedJobCount();
+    }
+
+    @Override
+    public long getStartTime() {
+        return new DateTime().getMillis();
+    }
+
+    @Override
+    public Object listQueuedJobs() {
+        // TODO implement listQueuedJobs()
+        return super.listQueuedJobs();
+    }
+
+}
Index: src/main/resources/org/modeshape/jboss/managed/JBossManagedI18n.properties
===================================================================
--- src/main/resources/org/modeshape/jboss/managed/JBossManagedI18n.properties	(revision 0)
+++ src/main/resources/org/modeshape/jboss/managed/JBossManagedI18n.properties	(revision 0)
@@ -0,0 +1,26 @@
+#
+# ModeShape (http://www.modeshape.org)
+# See the COPYRIGHT.txt file distributed with this work for information
+# regarding copyright ownership.  Some portions may be licensed
+# to Red Hat, Inc. under one or more contributor license agreements.
+# See the AUTHORS.txt file in the distribution for a full listing of 
+# individual contributors. 
+#
+# ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+# is licensed to you under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# ModeShape is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this software; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+#
+
+errorDeterminingIfConnectionIsAlive = Unexpected error trying to determine if connector "{0}" is alive.
+errorGettingRepositoryFromEngine = Unexpected error trying to obtain repository "{0}" from engine.
Index: .project
===================================================================
--- .project	(revision 0)
+++ .project	(revision 0)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>modeshape-jboss-managed</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: pom.xml
===================================================================
--- pom.xml	(revision 0)
+++ pom.xml	(revision 0)
@@ -0,0 +1,128 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.modeshape</groupId>
+		<artifactId>modeshape</artifactId>
+		<version>1.2-SNAPSHOT</version>
+	</parent>
+	<!-- The groupId and version values are inherited from parent -->
+	<artifactId>modeshape-jboss-managed</artifactId>
+	<packaging>jar</packaging>
+	<name>ModeShape Managed Objects</name>
+	<description>ModeShape JBoss managed objects</description>
+	<url>http://www.modeshape.org</url>
+
+	<!--
+		Define the dependencies. Note that all version and scopes default to
+		those defined in the dependencyManagement section of the parent pom.
+	-->
+	<dependencies>
+		<!-- 
+            Testing (note the scope)
+        -->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.hamcrest</groupId>
+			<artifactId>hamcrest-library</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<scope>test</scope>
+		</dependency>
+
+		<!--
+			Logging (require SLF4J API for compiling, but use Log4J and its SLF4J
+			binding for testing)
+		-->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+		</dependency>
+
+        <!--
+            ModeShape dependencies
+        -->
+        <dependency>
+            <groupId>org.modeshape</groupId>
+            <artifactId>modeshape-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.modeshape</groupId>
+            <artifactId>modeshape-graph</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.modeshape</groupId>
+            <artifactId>modeshape-repository</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.modeshape</groupId>
+            <artifactId>modeshape-jcr</artifactId>
+        </dependency>
+
+        <!-- 
+            Java Concurrency in Practice annotations
+        -->
+    	<dependency>
+    		<groupId>net.jcip</groupId>
+    		<artifactId>jcip-annotations</artifactId>
+    	</dependency>
+ 
+        <!--
+            JBoss dependencies
+        -->
+        <dependency>
+            <groupId>org.jboss.man</groupId>
+            <artifactId>jboss-managed</artifactId>
+            <version>2.1.0.SP1</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+	<build>
+		<plugins>
+			<!--
+				Adding OSGI metadata to the JAR without changing the packaging type.
+			-->
+			<plugin>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+					</archive>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>bundle-manifest</id>
+						<phase>process-classes</phase>
+						<goals>
+							<goal>manifest</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-report-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</reporting>
+</project>
