You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/12/13 01:01:07 UTC

[18/52] [partial] ISIS-188: renaming packages in line with groupId:artifactId

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java
deleted file mode 100644
index bfa5829..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-
-import org.apache.log4j.Logger;
-
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server.Util;
-import org.apache.isis.runtimes.dflt.runtime.persistence.ObjectNotFoundException;
-
-public class ClientConnection {
-
-    private static final Logger LOG = Logger.getLogger(ClientConnection.class);
-
-    private final InputStream inputStream;
-    private final OutputStream outputStream;
-    private final PrintWriter writer;
-    private final BufferedReader reader;
-    private String[] headers;
-    private int header;
-
-    public ClientConnection(final InputStream input, final OutputStream output) {
-        outputStream = Util.trace(output, true);
-        writer = new PrintWriter(new OutputStreamWriter(outputStream, Util.ENCODING));
-        inputStream = Util.trace(input, true);
-        reader = new BufferedReader(new InputStreamReader(inputStream, Util.ENCODING));
-    }
-
-    public void close() {
-        try {
-            reader.close();
-        } catch (final IOException e) {
-            LOG.error("Failed to close connection", e);
-        }
-        writer.close();
-    }
-
-    void logComplete() {
-        LOG.debug("request complete: " + outputStream);
-        LOG.debug("response complete: " + inputStream);
-    }
-
-    void logFailure() {
-        LOG.info("request failed: " + outputStream);
-        LOG.info("response failed: " + inputStream);
-    }
-
-    public void request(final char command, final String request) {
-        LOG.debug("request: " + command + request);
-        write(command + request);
-    }
-
-    public void validateRequest() {
-        writer.print('\n');
-        writer.flush();
-        getReponseHeader();
-        final String status = readNext();
-        if (status.equals("error")) {
-            final String message = getResponseData();
-            throw new RemotingException(message);
-        } else if (status.equals("not-found")) {
-            final String message = getResponseData();
-            throw new ObjectNotFoundException(message);
-        } else if (status.equals("concurrency")) {
-            final String data = getResponseData();
-            // TODO create better exceptions (requires way to restore
-            // object/version)
-            if (data.startsWith("{")) {
-                throw new ConcurrencyException(data, null);
-
-            } else {
-                throw new ConcurrencyException(data, null);
-
-            }
-        } else if (!status.equals("ok")) {
-            throw new RemotingException("Invalid status in response: " + status);
-        }
-    }
-
-    public void requestData(final String data) {
-        write(data);
-    }
-
-    public void endRequestSection() {
-        writer.print('\n');
-    }
-
-    private void write(final String req) {
-        writer.print(req);
-        writer.print('\n');
-    }
-
-    public void getReponseHeader() {
-        try {
-            final String response = reader.readLine();
-            LOG.debug("response: " + response);
-            headers = response.split(" ");
-        } catch (final IOException e) {
-            throw new NoSqlStoreException(e);
-        }
-    }
-
-    public String getResponse() {
-        return readNext();
-    }
-
-    public boolean getResponseAsBoolean() {
-        final String response = readNext();
-        return response.equals("true") ? true : false;
-    }
-
-    public long getResponseAsLong() {
-        final String response = readNext();
-        return Long.valueOf(response).longValue();
-    }
-
-    /**
-     * Read all the data until the next blank line
-     */
-    public String getResponseData() {
-        try {
-            final StringBuffer buffer = new StringBuffer();
-            String line;
-            while ((line = reader.readLine()) != null && line.length() > 0) {
-                buffer.append(line);
-                buffer.append('\n');
-            }
-            return buffer.toString();
-        } catch (final Exception e) {
-            logFailure();
-            LOG.error(e);
-            throw new RemotingException(e);
-        }
-    }
-
-    private String readNext() {
-        if (header >= headers.length) {
-            throw new RemotingException("attempting to reader header property (index) " + header + " when there are only " + headers.length);
-        }
-        return headers[header++];
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java
deleted file mode 100644
index c747456..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import java.util.zip.CRC32;
-
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
-
-class FileClientCommandContext implements NoSqlCommandContext {
-
-    private final ClientConnection connection;
-
-    public FileClientCommandContext(final ClientConnection connection) {
-        this.connection = connection;
-    }
-
-    @Override
-    public void start() {
-    }
-
-    @Override
-    public void end() {
-    }
-
-    @Override
-    public StateWriter createStateWriter(final ObjectSpecId specificationName) {
-        return new JsonStateWriter();
-    }
-
-    @Override
-    public void delete(final ObjectSpecId objectSpecId, final String key, final String version, final Oid oid) {
-        connection.request('D', objectSpecId + " " + key + " " + version + " null");
-        connection.endRequestSection();
-    }
-
-    @Override
-    public void insert(final StateWriter writer) {
-        write('I', (JsonStateWriter) writer);
-    }
-
-    @Override
-    public void update(final StateWriter writer) {
-        write('U', (JsonStateWriter) writer);
-    }
-
-    private void write(final char command, final JsonStateWriter writer) {
-        connection.request(command, writer.getRequest());
-        final String data = writer.getData();
-
-        final CRC32 inputChecksum = new CRC32();
-        inputChecksum.update(data.getBytes());
-        inputChecksum.update('\n');
-        final long checksum = inputChecksum.getValue();
-        final String code = Long.toHexString(checksum);
-
-        connection.requestData("00000000".substring(0, 8 - code.length()) + code + data);
-        connection.endRequestSection();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java
deleted file mode 100644
index c486907..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import java.io.IOException;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.zip.CRC32;
-
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
-import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.log4j.Logger;
-
-public class FileServerDb implements NoSqlDataDatabase {
-
-    private static final Logger LOG = Logger.getLogger(FileServerDb.class);
-
-    private final String host;
-    private final int port;
-
-    private final int timeout;
-
-    public FileServerDb(final String host, final int port, final int timeout) {
-        this.host = host;
-        this.port = port == 0 ? 9012 : port;
-        this.timeout = timeout;
-    }
-
-    // TODO pool connection and reuse
-    private ClientConnection getConnection() {
-        try {
-            final Socket socket;
-            socket = new Socket(host, port);
-            socket.setSoTimeout(timeout);
-            return new ClientConnection(socket.getInputStream(), socket.getOutputStream());
-        } catch (final UnknownHostException e) {
-            throw new NoSqlStoreException("Unknow host " + host, e);
-        } catch (final IOException e) {
-            throw new NoSqlStoreException("Failed to connect to " + host + ":" + port, e);
-        }
-
-    }
-
-    // TODO pool connection and reuse
-    private void returnConnection(final ClientConnection connection) {
-        connection.logComplete();
-        connection.close();
-    }
-
-    // TODO pool connection and reuse - probably need to replace the connection
-    private void abortConnection(final ClientConnection connection) {
-        connection.logFailure();
-        connection.close();
-    }
-
-    @Override
-    public StateReader getInstance(final String key, final ObjectSpecId objectSpecId) {
-        final ClientConnection connection = getConnection();
-        String data;
-        try {
-            final String request = objectSpecId + " " + key;
-            connection.request('R', request);
-            connection.validateRequest();
-            data = connection.getResponseData();
-        } catch (final RuntimeException e) {
-            LOG.error("aborting getInstance", e);
-            abortConnection(connection);
-            throw e;
-        }
-        data = checkData(data);
-        final JsonStateReader reader = new JsonStateReader(data);
-        returnConnection(connection);
-        return reader;
-    }
-
-    @Override
-    public Iterator<StateReader> instancesOf(final ObjectSpecId objectSpecId) {
-        final ClientConnection connection = getConnection();
-        List<StateReader> instances;
-        try {
-            instances = new ArrayList<StateReader>();
-            connection.request('L', objectSpecId + " 0");
-            connection.validateRequest();
-            String data;
-            while ((data = connection.getResponseData()).length() > 0) {
-                data = checkData(data);
-                final JsonStateReader reader = new JsonStateReader(data);
-                instances.add(reader);
-            }
-        } catch (final RuntimeException e) {
-            LOG.error("aborting instancesOf", e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-        return instances.iterator();
-
-    }
-
-    private String checkData(final String data) {
-        final String objectData = data.substring(8);
-
-        final CRC32 inputChecksum = new CRC32();
-        inputChecksum.update(objectData.getBytes());
-        final long actualChecksum = inputChecksum.getValue();
-
-        final String encodedChecksum = data.substring(0, 8);
-        final long expectedChecksum = Long.valueOf(encodedChecksum, 16);
-
-        if (actualChecksum != expectedChecksum) {
-            throw new NoSqlStoreException("Data integrity error; checksums different");
-        }
-
-        return objectData;
-    }
-
-    @Override
-    public void write(final List<PersistenceCommand> commands) {
-        final ClientConnection connection = getConnection();
-        PersistenceCommand currentCommand = null;
-        try {
-            connection.request('W', "");
-            final NoSqlCommandContext context = new FileClientCommandContext(connection);
-            for (final PersistenceCommand command : commands) {
-                currentCommand = command;
-                command.execute(context);
-            }
-            connection.validateRequest();
-
-        } catch (final ConcurrencyException e) {
-            throw e;
-        } catch (final RuntimeException e) {
-            LOG.error("aborting write, command: " + currentCommand, e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-    }
-
-    @Override
-    public void close() {
-    }
-
-    @Override
-    public void open() {
-    }
-
-    @Override
-    public boolean containsData() {
-        final ClientConnection connection = getConnection();
-        boolean flag;
-        try {
-            connection.request('X', "contains-data");
-            connection.validateRequest();
-            flag = connection.getResponseAsBoolean();
-        } catch (final RuntimeException e) {
-            LOG.error("aborting containsData", e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-        return flag;
-    }
-
-    @Override
-    public long nextSerialNumberBatch(final ObjectSpecId name, final int batchSize) {
-        final ClientConnection connection = getConnection();
-        long serialNumber;
-        try {
-            connection.request('N', name + " " + Integer.toString(batchSize));
-            connection.validateRequest();
-            serialNumber = connection.getResponseAsLong();
-        } catch (final RuntimeException e) {
-            LOG.error("aborting nextSerialNumberBatch", e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-        return serialNumber;
-    }
-
-    @Override
-    public void addService(final ObjectSpecId objectSpecId, final String key) {
-        final ClientConnection connection = getConnection();
-        try {
-            connection.request('T', objectSpecId.asString() + " " + key);
-            connection.validateRequest();
-        } catch (final RuntimeException e) {
-            LOG.error("aborting addService", e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-    }
-
-    @Override
-    public String getService(final ObjectSpecId objectSpecId) {
-        final ClientConnection connection = getConnection();
-        String response;
-        try {
-            connection.request('S', objectSpecId.asString());
-            connection.validateRequest();
-            response = connection.getResponse();
-        } catch (final RuntimeException e) {
-            LOG.error("aborting getServices", e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-        return response.equals("null") ? null : response;
-    }
-
-    @Override
-    public boolean hasInstances(final ObjectSpecId objectSpecId) {
-        final ClientConnection connection = getConnection();
-        boolean hasInstances;
-        try {
-            connection.request('I', objectSpecId.asString());
-            connection.validateRequest();
-            hasInstances = connection.getResponseAsBoolean();
-        } catch (final RuntimeException e) {
-            LOG.error("aborting hasInstances", e);
-            abortConnection(connection);
-            throw e;
-        }
-        returnConnection(connection);
-        return hasInstances;
-    }
-
-    public Iterator<StateReader> instancesOf(ObjectSpecId specId, ObjectAdapter pattern) {
-    	// TODO implement
-        throw new NotImplementedException();
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java
deleted file mode 100644
index 0bbcbb3..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import org.apache.isis.core.commons.config.ConfigurationConstants;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlPersistorMechanismInstaller;
-
-public class FileServerPersistorMechanismInstaller extends NoSqlPersistorMechanismInstaller {
-
-    private static final String ROOT = ConfigurationConstants.ROOT + "nosql.fileserver.";
-    private static final String DB_HOST = ROOT + "host";
-    private static final String DB_PORT = ROOT + "port";
-    private static final String DB_TIMEMOUT = ROOT + "timeout";
-
-    public FileServerPersistorMechanismInstaller() {
-        super("fileserver");
-    }
-
-    @Override
-    protected NoSqlDataDatabase createNoSqlDatabase(final IsisConfiguration configuration) {
-        NoSqlDataDatabase db;
-        final String host = configuration.getString(DB_HOST, "localhost");
-        final int port = configuration.getInteger(DB_PORT, 0);
-        final int timeout = configuration.getInteger(DB_TIMEMOUT, 5000);
-        db = new FileServerDb(host, port, timeout);
-        return db;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java
deleted file mode 100644
index 994c434..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
-
-public class JsonStateReader implements StateReader {
-    
-    // private static final Logger LOG = Logger.getLogger(FileStateReader.class);
-    
-    private JSONObject instance;
-
-    public JsonStateReader(final String data) {
-        try {
-            final JSONObject instance = new JSONObject(data);
-            this.instance = instance;
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException("failed initialise JSON object for text form: " + data, e);
-        }
-    }
-
-    private JsonStateReader(final JSONObject aggregatedObject) {
-        instance = aggregatedObject;
-    }
-
-    @Override
-    public StateReader readAggregate(final String name) {
-        if (instance.has(name)) {
-            final JSONObject aggregatedObject = instance.optJSONObject(name);
-            if (aggregatedObject == null) {
-                return null;
-            } else {
-                return new JsonStateReader(aggregatedObject);
-            }
-        } else {
-            return null;
-        }
-    }
-
-    @Override
-    public long readLongField(final String id) {
-        final Object value = instance.opt(id);
-        if (value == null) {
-            return 0;
-        } else {
-            return Long.valueOf((String) value);
-        }
-    }
-
-    @Override
-    public String readField(final String name) {
-        if (instance.has(name)) {
-            final Object value = instance.optString(name);
-            if (value == null) {
-                return null;
-            } else {
-                return (String) value;
-            }
-        } else {
-            return null;
-        }
-    }
-
-//    @Override
-//    public String readObjectType() {
-//        return readRequiredField("_type");
-//    }
-//
-//    @Override
-//    public String readId() {
-//        return readRequiredField("_id");
-//    }
-
-      @Override
-      public String readOid() {
-          return readRequiredField(PropertyNames.OID);
-      }
-
-    @Override
-    public String readVersion() {
-        return readRequiredField(PropertyNames.VERSION);
-    }
-
-    @Override
-    public String readEncrytionType() {
-        try {
-            String encryptionType;
-            if (instance.has("_encrypt")) {
-                encryptionType = instance.getString("_encrypt");
-            } else {
-                encryptionType = "none";
-            }
-            return encryptionType;
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException("failed to read field _encrypt", e);
-        }
-    }
-
-    @Override
-    public String readUser() {
-        return readRequiredField(PropertyNames.USER);
-    }
-
-    @Override
-    public String readTime() {
-        return readRequiredField(PropertyNames.TIME);
-    }
-
-    private String readRequiredField(final String name) {
-        try {
-            final Object value = instance.get(name);
-            return (String) value;
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException("failed to read field " + name, e);
-        }
-    }
-
-    @Override
-    public List<StateReader> readCollection(final String id) {
-        final JSONArray array = instance.optJSONArray(id);
-        final List<StateReader> readers = new ArrayList<StateReader>();
-        if (array != null) {
-            final int size = array.length();
-            for (int i = 0; i < size; i++) {
-                readers.add(new JsonStateReader(array.optJSONObject(i)));
-            }
-        }
-        return readers;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java
deleted file mode 100644
index 56a70d2..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
-import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import com.google.common.collect.Lists;
-
-public class JsonStateWriter implements StateWriter {
-
-    private final JSONObject dbObject = new JSONObject();
-    
-    private TypedOid oid;
-    private String currentVersion;
-    private String newVersion;
-
-
-    @Override
-    public StateWriter addAggregate(final String id) {
-        final JsonStateWriter jsonStateWriter = new JsonStateWriter();
-        try {
-            dbObject.put(id, jsonStateWriter.dbObject);
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException(e);
-        }
-        return jsonStateWriter;
-    }
-
-    @Override
-    public void writeOid(final TypedOid typedOid) {
-        this.oid = typedOid;
-        writeField(PropertyNames.OID, typedOid.enString(getOidMarshaller()));
-    }
-    
-    @Override
-    public void writeEncryptionType(final String type) {
-        writeField(PropertyNames.ENCRYPT, type);
-    }
-
-    @Override
-    public void writeVersion(final String currentVersion, final String newVersion) {
-        this.currentVersion = currentVersion;
-        this.newVersion = newVersion;
-        writeField(PropertyNames.VERSION, newVersion);
-    }
-
-    @Override
-    public void writeTime(final String time) {
-        writeField(PropertyNames.TIME, time);
-    }
-
-    @Override
-    public void writeUser(final String user) {
-        writeField(PropertyNames.USER, user);
-    }
-
-    @Override
-    public void writeField(final String id, final String data) {
-        try {
-            dbObject.put(id, data == null ? JSONObject.NULL : data);
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException(e);
-        }
-    }
-
-    @Override
-    public void writeField(final String id, final long l) {
-        try {
-            dbObject.put(id, Long.toString(l));
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException(e);
-        }
-    }
-
-    public String getRequest() {
-        return oid.enString(getOidMarshaller()) + " " + currentVersion + " " + newVersion;
-    }
-
-    public String getData() {
-        try {
-            return dbObject.toString(4);
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException(e);
-        }
-    }
-
-    @Override
-    public StateWriter createElementWriter() {
-        return new JsonStateWriter();
-    }
-
-    @Override
-    public void writeCollection(final String id, final List<StateWriter> elements) {
-        final List<JSONObject> collection = Lists.newArrayList();
-        for (final StateWriter writer : elements) {
-            collection.add(((JsonStateWriter) writer).dbObject);
-        }
-        try {
-            dbObject.put(id, collection);
-        } catch (final JSONException e) {
-            throw new NoSqlStoreException(e);
-        }
-    }
-
-    
-    ///////////////////////////////////////////////////////
-    // dependencies (from context)
-    ///////////////////////////////////////////////////////
-    
-    protected OidMarshaller getOidMarshaller() {
-		return IsisContext.getOidMarshaller();
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java
deleted file mode 100644
index 6cf57e3..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-interface PropertyNames {
-    static final String ENCRYPT = "_encrypt";
-    
-//    static final String TYPE = "_type";
-//    static final String ID = "_id";
-    
-    static final String OID = "_oid";
-    static final String VERSION = "_version";
-    static final String TIME = "_time";
-    static final String USER = "_user";
-}
-

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/RemotingException.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/RemotingException.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/RemotingException.java
deleted file mode 100644
index c0b6a60..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/RemotingException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
-
-import org.apache.isis.core.commons.exceptions.IsisException;
-
-public class RemotingException extends IsisException {
-
-    private static final long serialVersionUID = 1L;
-
-    public RemotingException(final String message) {
-        super(message);
-    }
-
-    public RemotingException(final Exception e) {
-        super(e);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileReader.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileReader.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileReader.java
deleted file mode 100644
index 0e6774d..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileReader.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-import org.apache.log4j.Logger;
-
-public class DataFileReader {
-    private static final Logger LOG = Logger.getLogger(DataFileReader.class);
-
-    private final BufferedReader reader;
-    private final String id;
-    private final String version;
-
-    /**
-     * Opens the file for the specified id. The top line contains: type id
-     * version newline The remainder contains the data.
-     */
-    public DataFileReader(final String type, final String id) throws IOException {
-        final File file = Util.dataFile(type, id);
-        reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8"));
-        final String line = reader.readLine();
-        if (line == null || line.length() == 0) {
-            throw new FileServerException("No data in file: " + file.getAbsolutePath());
-        }
-        final String[] split = line.split(" ");
-        this.id = split[1];
-        if (!id.equals(id)) {
-            throw new FileServerException("Id in file (" + this.id + ") not the same as the file name: " + file.getAbsolutePath());
-        }
-        version = split[2];
-    }
-
-    public void close() {
-        if (reader != null) {
-            try {
-                reader.close();
-            } catch (final IOException e) {
-                LOG.error("Failed to close reader " + reader, e);
-            }
-        }
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public String getData() {
-        try {
-            final StringBuffer buffer = new StringBuffer();
-            String line;
-            while ((line = reader.readLine()) != null) {
-                buffer.append(line);
-                buffer.append("\n");
-            }
-            return buffer.toString();
-        } catch (final IOException e) {
-            throw new FileServerException("Failed to read data for " + id, e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileWriter.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileWriter.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileWriter.java
deleted file mode 100644
index cf57046..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/DataFileWriter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.List;
-
-public class DataFileWriter {
-
-    // private static final Logger LOG = Logger.getLogger(DataWriter.class);
-
-    private final List<FileContent> files;
-
-    public DataFileWriter(final List<FileContent> files) {
-        this.files = files;
-    }
-
-    public void writeData() throws IOException {
-        for (final FileContent content : files) {
-            if (Util.isDelete(content.command)) {
-                final File f = Util.dataFile(content.type, content.id);
-                f.delete();
-            } else {
-                writeFile(content);
-            }
-        }
-    }
-
-    // TODO to be consistent use PrintWriter
-    private void writeFile(final FileContent content) throws IOException {
-        FileOutputStream output = null;
-        final File file = Util.dataFile(content.type, content.id);
-        if (!file.getParentFile().exists()) {
-            file.getParentFile().mkdir();
-        }
-        try {
-            output = new FileOutputStream(file);
-            content.write(output);
-        } finally {
-            Util.closeSafely(output);
-        }
-    }
-
-    public void close() {
-        // TODO Auto-generated method stub
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileContent.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileContent.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileContent.java
deleted file mode 100644
index 3f4b077..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileContent.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-class FileContent {
-
-    private static final String ENCODING = "utf-8";
-
-    final char command;
-    final String id;
-    final String currentVersion;
-    final String newVersion;
-    final String data;
-    final String type;
-
-    public FileContent(final char command, final String id, final String currentVersion, final String newVersion, final String type, final String buf) {
-        this.command = command;
-        this.id = id;
-        this.currentVersion = currentVersion;
-        this.newVersion = newVersion;
-        this.type = type;
-        this.data = buf;
-    }
-
-    public void write(final OutputStream output) throws IOException {
-        output.write(type.getBytes(ENCODING));
-        output.write(' ');
-        output.write(id.getBytes(ENCODING));
-        output.write(' ');
-        output.write(newVersion.getBytes(ENCODING));
-        output.write('\n');
-        output.write(data.getBytes(ENCODING));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java
deleted file mode 100644
index 9f7edf6..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketTimeoutException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.CRC32;
-import java.util.zip.CheckedInputStream;
-import java.util.zip.CheckedOutputStream;
-
-import org.apache.commons.cli.BasicParser;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.commons.configuration.SystemConfiguration;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-
-import org.apache.isis.core.commons.lang.CastUtils;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-
-public class FileServer {
-
-    private static final Logger LOG = Logger.getLogger(FileServer.class);
-    private static final String DEFAULT_HOST = "localhost";
-    private static final int DEFAULT_SERVICE_PORT = 9100;
-    private static final int DEFAULT_CONTROL_PORT = 9101;
-    private static final int DEFAULT_SYNC_PORT = 9102;
-    private static final int BACKLOG = 0;
-    private static final int INIT = 1;
-    private static final int RECOVERY_LOG = 2;
-
-    public static void main(final String[] args) throws IOException, ParseException {
-
-        final Options options = new Options();
-        options.addOption("h", "help", false, "Show this help");
-        options.addOption("m", "mode", true, "mode: normal | secondary | recovery | archive");
-
-        final CommandLineParser parser = new BasicParser();
-        final CommandLine cmd = parser.parse(options, args);
-
-        if (cmd.hasOption('h')) {
-            printHelp(options);
-            return;
-        }
-
-        final String mode = cmd.getOptionValue("m");
-
-        final List<String> argList = CastUtils.cast(cmd.getArgList());
-        if ("recovery".equals(mode)) {
-            final FileServer fileServer = new FileServer();
-            fileServer.startRecovery(argList);
-        } else if ("archive".equals(mode)) {
-            final FileServer fileServer = new FileServer();
-            fileServer.startArchive(argList);
-        } else if ("secondary".equals(mode)) {
-            final FileServer fileServer = new FileServer();
-            fileServer.startSecondary();
-        } else if (mode == null || "normal".equals(mode)) {
-            final FileServer fileServer = new FileServer();
-            fileServer.startNormal();
-        } else {
-            printHelp(options);
-        }
-    }
-
-    private static void printHelp(final Options options) {
-        final HelpFormatter help = new HelpFormatter();
-        help.printHelp("FileSever [OPTIONS] [FIRST RECOVERY FILES] [LAST RECOVERY FILES]", options);
-    }
-
-    private FileServerProcessor server;
-    private CompositeConfiguration config;
-
-    private boolean awaitConnections = true;
-    private boolean isQuiescent = false;
-    private long requests;
-
-    public FileServer() {
-        PropertyConfigurator.configure("config/logging.properties");
-
-        try {
-            config = new CompositeConfiguration();
-            config.addConfiguration(new SystemConfiguration());
-            config.addConfiguration(new PropertiesConfiguration("config/server.properties"));
-
-            final String data = config.getString("fileserver.data");
-            final String services = config.getString("fileserver.services");
-            final String logs = config.getString("fileserver.logs");
-            final String archive = config.getString("fileserver.archive");
-
-            Util.setDirectory(data, services, logs, archive);
-            server = new FileServerProcessor();
-        } catch (final ConfigurationException e) {
-            LOG.error("configuration failure", e);
-            System.out.println(e.getMessage());
-            System.exit(0);
-        }
-    }
-
-    private void startNormal() {
-        new Thread("control") {
-            @Override
-            public void run() {
-                startControl();
-            };
-        }.start();
-        new Thread("service") {
-            @Override
-            public void run() {
-                startService();
-            };
-        }.start();
-        new Thread("log-rolling") {
-            @Override
-            public void run() {
-                startLogRolling();
-            }
-        }.start();
-        if (config.getBoolean("fileserver.sync", false)) {
-            new Thread("sync") {
-                @Override
-                public void run() {
-                    startSyncing();
-                };
-            }.start();
-        } else {
-            LOG.info("not syncing to secondary server");
-        }
-
-    }
-
-    private void startService() {
-        final String serviceHost = config.getString("fileserver.host", DEFAULT_HOST);
-        final int servicePort = config.getInt("fileserver.port", DEFAULT_SERVICE_PORT);
-        final int connectionTimeout = config.getInt("fileserver.connection.timeout", 5000);
-        final int readTimeout = config.getInt("fileserver.read.timeout", 5000);
-
-        ServerSocket socket = null;
-        try {
-            LOG.debug("setting up service socket on " + serviceHost + ":" + servicePort);
-            final InetAddress address = InetAddress.getByName(serviceHost);
-            socket = new ServerSocket(servicePort, BACKLOG, address);
-            socket.setSoTimeout(connectionTimeout);
-            LOG.info("file service listenting on " + socket.getInetAddress().getHostAddress() + " port " + socket.getLocalPort());
-            LOG.debug("file service listenting on " + socket);
-            final LogRange logFileRange = Util.logFileRange();
-            if (!logFileRange.noLogFile()) {
-                final long lastRecoveryFile = logFileRange.getLast();
-                final File file = Util.logFile(lastRecoveryFile);
-                LOG.info("replaying last recovery file: " + file.getAbsolutePath());
-                recover(file);
-            }
-            server.startup();
-        } catch (final UnknownHostException e) {
-            LOG.error("Unknown host " + serviceHost, e);
-            System.exit(0);
-        } catch (final IOException e) {
-            LOG.error("start failure - networking not set up for " + serviceHost, e);
-            System.exit(0);
-        } catch (final RuntimeException e) {
-            LOG.error("start failure", e);
-            System.exit(0);
-        }
-        do {
-            try {
-                while (isQuiescent) {
-                    try {
-                        Thread.sleep(300);
-                    } catch (final InterruptedException ignore) {
-                    }
-                }
-                final Socket connection = socket.accept();
-                LOG.debug("connection from " + connection);
-                connection.setSoTimeout(readTimeout);
-                serviceConnection(connection, readTimeout);
-            } catch (final SocketTimeoutException expected) {
-            } catch (final IOException e) {
-                LOG.error("networking problem", e);
-            }
-        } while (awaitConnections);
-    }
-
-    private void serviceConnection(final Socket connection, final int readTimeout) {
-        try {
-            final InputStream input = connection.getInputStream();
-            final OutputStream output = connection.getOutputStream();
-            final ServerConnection pipe = new ServerConnection(input, output);
-            requests++;
-            server.process(pipe);
-            pipe.logComplete();
-        } catch (final NoSqlStoreException e) {
-            if (e.getCause() instanceof SocketTimeoutException) {
-                LOG.error("read timed out after " + (readTimeout / 1000.0) + " seconds", e);
-            } else {
-                LOG.error("file server failure", e);
-            }
-        } catch (final IOException e) {
-            LOG.error("networking failure", e);
-        } catch (final RuntimeException e) {
-            LOG.error("request failure", e);
-        } finally {
-            try {
-                connection.close();
-            } catch (final IOException e) {
-                LOG.warn("failure to close connection", e);
-            }
-        }
-    }
-
-    private void startSyncing() {
-        final String syncHost = config.getString("fileserver.sync-host", DEFAULT_HOST);
-        final int syncPort = config.getInt("fileserver.sync-port", DEFAULT_SYNC_PORT);
-        final int connectionTimeout = config.getInt("fileserver.connection.timeout", 5000);
-
-        LOG.info("preparing to sync to secondary server on " + syncHost + " port " + syncPort);
-
-        final InetAddress address;
-        try {
-            address = InetAddress.getByName(syncHost);
-        } catch (final UnknownHostException e) {
-            LOG.error("Unknown host " + syncHost, e);
-            System.exit(0);
-            return;
-        }
-
-        while (awaitConnections) {
-            Socket socket = null;
-            try {
-                socket = new Socket(address, syncPort);
-                LOG.info("sync connected to " + socket.getInetAddress().getHostAddress() + " port " + socket.getLocalPort());
-
-                final CRC32 crc32 = new CRC32();
-                final DataOutput output = new DataOutputStream(new CheckedOutputStream(socket.getOutputStream(), crc32));
-                final DataInput input = new DataInputStream(socket.getInputStream());
-                output.writeByte(INIT);
-                long logId = input.readLong();
-                do {
-                    final long nextLogId = logId + 1;
-                    final File file = Util.logFile(nextLogId);
-                    if (file.exists() && server.getLogger().isWritten(nextLogId)) {
-                        logId++;
-
-                        output.writeByte(RECOVERY_LOG);
-                        crc32.reset();
-                        output.writeLong(logId);
-
-                        LOG.info("sending recovery file: " + file.getName());
-                        final BufferedInputStream fileInput = new BufferedInputStream(new FileInputStream(file));
-
-                        final byte[] buffer = new byte[8092];
-                        int read;
-                        while ((read = fileInput.read(buffer)) > 0) {
-                            output.writeInt(read);
-                            output.write(buffer, 0, read);
-                        }
-                        output.writeInt(0);
-
-                        output.writeLong(crc32.getValue());
-                    }
-                    try {
-                        Thread.sleep(300);
-                    } catch (final InterruptedException ignore) {
-                    }
-
-                    while (isQuiescent) {
-                        try {
-                            Thread.sleep(300);
-                        } catch (final InterruptedException ignore) {
-                        }
-                    }
-                } while (awaitConnections);
-
-            } catch (final ConnectException e) {
-                LOG.warn("not yet connected to secondary server at " + syncHost + " port " + syncPort);
-                try {
-                    Thread.sleep(connectionTimeout);
-                } catch (final InterruptedException ignore) {
-                }
-            } catch (final IOException e) {
-                LOG.error("start failure - networking not set up for " + syncHost, e);
-                try {
-                    Thread.sleep(300);
-                } catch (final InterruptedException ignore) {
-                }
-            } catch (final RuntimeException e) {
-                LOG.error("start failure", e);
-                try {
-                    Thread.sleep(300);
-                } catch (final InterruptedException ignore) {
-                }
-            }
-        }
-
-    }
-
-    private void startControl() {
-        final String controlHost = config.getString("fileserver.control-host", DEFAULT_HOST);
-        final int controlPort = config.getInt("fileserver.control-port", DEFAULT_CONTROL_PORT);
-        final int connectionTimeout = config.getInt("fileserver.connection.timeout", 5000);
-
-        ServerSocket socket = null;
-        try {
-            LOG.debug("setting up control socket on " + controlHost + ":" + controlPort);
-            final InetAddress address = InetAddress.getByName(controlHost);
-            socket = new ServerSocket(controlPort, 0, address);
-            socket.setSoTimeout(connectionTimeout);
-            LOG.info("file control listenting on " + socket.getInetAddress().getHostAddress() + " port " + socket.getLocalPort());
-            LOG.debug("file control listenting on " + socket);
-        } catch (final UnknownHostException e) {
-            LOG.error("Unknown host " + controlHost, e);
-            System.exit(0);
-        } catch (final IOException e) {
-            LOG.error("start failure - networking not set up for " + controlHost, e);
-            System.exit(0);
-        } catch (final RuntimeException e) {
-            LOG.error("start failure", e);
-            System.exit(0);
-        }
-        do {
-            try {
-                final Socket connection = socket.accept();
-                LOG.info("control connection from " + connection);
-                controlConnection(connection);
-            } catch (final SocketTimeoutException expected) {
-            } catch (final IOException e) {
-                LOG.error("networking problem", e);
-            }
-        } while (awaitConnections);
-    }
-
-    private void controlConnection(final Socket connection) {
-        try {
-            final InputStream input = connection.getInputStream();
-            final BufferedReader reader = new BufferedReader(new InputStreamReader(input));
-            final OutputStream output = connection.getOutputStream();
-            final PrintWriter print = new PrintWriter(output);
-            print.print("> ");
-            print.flush();
-            String line;
-            while ((line = reader.readLine()) != null) {
-                if ("shutdown".equals(line)) {
-                    awaitConnections = false;
-                    print.println("Server shutdown initiated...");
-                    print.flush();
-                    server.shutdown();
-                    break;
-                } else if ("quiesce".equals(line)) {
-                    isQuiescent = true;
-                    final String message = "Placing server in a quiescent state";
-                    LOG.info(message);
-                    print.println(message);
-                    print.print("> ");
-                    print.flush();
-                } else if ("resume".equals(line)) {
-                    if (isQuiescent) {
-                        isQuiescent = false;
-                        final String message = "Resuming from a quiescent state";
-                        LOG.info(message);
-                        print.println(message);
-                    } else {
-                        print.println("Can't resume as not currently in a quiescent state");
-                    }
-                    print.print("> ");
-                    print.flush();
-                } else if ("quit".equals(line)) {
-                    print.println("Bye");
-                    print.flush();
-                    break;
-                } else if ("status".equals(line)) {
-                    print.println("requests: " + requests);
-                    print.println("quiescent: " + isQuiescent);
-                    print.print("> ");
-                    print.flush();
-                } else {
-                    print.println("Unknown command, valid commands are: quit, quiesce, status, resume, shutdown");
-                    print.print("> ");
-                    print.flush();
-                }
-            }
-        } catch (final IOException e) {
-            LOG.error("networking failure", e);
-        } catch (final RuntimeException e) {
-            LOG.error("request failure", e);
-        } finally {
-            try {
-                connection.close();
-            } catch (final IOException e) {
-                LOG.warn("failure to close connection", e);
-            }
-        }
-    }
-
-    private void startRecovery(final List<String> list) {
-        LOG.info("starting recovery");
-        final LogRange logFileRange = Util.logFileRange();
-        if (logFileRange.noLogFile()) {
-            System.err.println("No recovery files found");
-            System.exit(0);
-        }
-        final long lastId = logFileRange.getLast();
-        LOG.info("last log file is " + Util.logFile(lastId).getName());
-
-        long startId = lastId;
-        long endId = lastId;
-
-        final int size = list.size();
-        if (size > 0) {
-            startId = Long.valueOf(list.get(0));
-            if (size > 1) {
-                endId = Long.valueOf(list.get(1));
-            }
-        }
-        if (startId < logFileRange.getFirst() || startId > lastId || endId > lastId) {
-            System.err.println("File IDs invalid: they must be between " + logFileRange.getFirst() + " and " + lastId);
-            System.exit(0);
-        }
-        if (startId > endId) {
-            System.err.println("File IDs invalid: start must be before the end");
-            System.exit(0);
-        }
-
-        Util.ensureDirectoryExists();
-        for (long id = startId; id <= endId; id++) {
-            final File file = Util.logFile(id);
-            LOG.info("recovering data from " + file.getName());
-            recover(file);
-        }
-        LOG.info("recovery complete");
-    }
-
-    private void startArchive(final List<String> list) {
-        LOG.info("starting archiving");
-        final LogRange logFileRange = Util.logFileRange();
-        if (logFileRange.noLogFile()) {
-            System.err.println("No recovery files found");
-            System.exit(0);
-        }
-        final long lastId = logFileRange.getLast();
-        LOG.info("last log file is " + Util.logFile(lastId).getName());
-
-        long endId = lastId - 1;
-
-        final int size = list.size();
-        if (size > 0) {
-            endId = Long.valueOf((String) list.get(0));
-        }
-        if (endId >= lastId) {
-            System.err.println("File ID invalid: they must be less that " + lastId);
-            System.exit(0);
-        }
-        final long startId = logFileRange.getFirst();
-        for (long id = startId; id <= endId; id++) {
-            final File file = Util.logFile(id);
-            LOG.info("moving " + file.getName());
-            final File destination = Util.archiveLogFile(id);
-            file.renameTo(destination);
-        }
-        LOG.info("archive complete");
-
-    }
-
-    private void startSecondary() {
-        final String serviceHost = config.getString("fileserver.sync-host", DEFAULT_HOST);
-        final int servicePort = config.getInt("fileserver.sync-port", DEFAULT_SYNC_PORT);
-
-        Util.ensureDirectoryExists();
-        ServerSocket socket = null;
-        try {
-            LOG.debug("setting up syncing socket on " + serviceHost + ":" + servicePort);
-            final InetAddress address = InetAddress.getByName(serviceHost);
-            socket = new ServerSocket(servicePort, 0, address);
-            LOG.info("listenting on " + socket.getInetAddress().getHostAddress() + " port " + socket.getLocalPort());
-            LOG.debug("listenting on " + socket);
-            do {
-                syncConnection(socket.accept(), 0);
-            } while (awaitConnections);
-        } catch (final UnknownHostException e) {
-            LOG.error("Unknown host " + serviceHost, e);
-            System.exit(0);
-        } catch (final IOException e) {
-            LOG.error("start failure - networking not set up for " + serviceHost, e);
-            System.exit(0);
-        } catch (final RuntimeException e) {
-            LOG.error("start failure", e);
-            System.exit(0);
-        }
-    }
-
-    private void syncConnection(final Socket connection, final int readTimeout) {
-        try {
-            final CRC32 crc32 = new CRC32();
-            final DataOutput output = new DataOutputStream(connection.getOutputStream());
-            final DataInput input = new DataInputStream(new CheckedInputStream(connection.getInputStream(), crc32));
-
-            if (input.readByte() != INIT) {
-                return;
-            }
-
-            final LogRange logFileRange = Util.logFileRange();
-            final long lastId = logFileRange.noLogFile() ? -1 : logFileRange.getLast();
-            output.writeLong(lastId);
-            do {
-                if (input.readByte() != RECOVERY_LOG) {
-                    return;
-                }
-                crc32.reset();
-                final long logId = input.readLong();
-                final File file = Util.tmpLogFile(logId);
-                LOG.info("syncing recovery file: " + file.getName());
-                final BufferedOutputStream fileOutput = new BufferedOutputStream(new FileOutputStream(file));
-
-                final byte[] buffer = new byte[8092];
-                int length;
-                while ((length = input.readInt()) > 0) {
-                    input.readFully(buffer, 0, length);
-                    fileOutput.write(buffer, 0, length);
-                }
-                fileOutput.close();
-
-                final long calculatedChecksum = crc32.getValue();
-                final long sentChecksum = input.readLong();
-                if (calculatedChecksum != sentChecksum) {
-                    throw new NoSqlStoreException("Checksum didn't match during download of " + file.getName());
-                }
-
-                recover(file);
-                final File renameTo = Util.logFile(logId);
-                file.renameTo(renameTo);
-            } while (true);
-        } catch (final NoSqlStoreException e) {
-            LOG.error("file server failure", e);
-        } catch (final IOException e) {
-            LOG.error("networking failure", e);
-        } catch (final RuntimeException e) {
-            LOG.error("request failure", e);
-        } finally {
-            try {
-                connection.close();
-            } catch (final IOException e) {
-                LOG.warn("failure to close connection", e);
-            }
-        }
-
-        // TODO restart
-    }
-
-    private void recover(final File file) {
-        LineNumberReader reader = null;
-        try {
-            reader = new LineNumberReader(new InputStreamReader(new FileInputStream(file), Util.ENCODING));
-
-            while (true) {
-                final String line = reader.readLine();
-                if (line == null) {
-                    break;
-                }
-                if (!line.startsWith("#transaction started")) {
-                    throw new NoSqlStoreException("No transaction start found: " + line + " (" + reader.getLineNumber() + ")");
-                }
-                readTransaction(reader);
-            }
-        } catch (final IOException e) {
-            throw new NoSqlStoreException(e);
-        } finally {
-            if (reader != null) {
-                try {
-                    reader.close();
-                } catch (final IOException e) {
-                    throw new NoSqlStoreException(e);
-                }
-            }
-        }
-    }
-
-    private void readTransaction(final LineNumberReader reader) throws IOException {
-        final ArrayList<FileContent> files = new ArrayList<FileContent>();
-        final DataFileWriter content = new DataFileWriter(files);
-        String header;
-        while ((header = reader.readLine()) != null) {
-            if (header.startsWith("#transaction ended")) {
-                LOG.debug("transaction read in (ending " + reader.getLineNumber() + ")");
-                content.writeData();
-                reader.readLine();
-                return;
-            }
-            if (header.startsWith("S")) {
-                final String[] split = header.substring(1).split(" ");
-                final String key = split[0];
-                final String name = split[1];
-                server.saveService(key, name);
-                reader.readLine();
-            } else if (header.startsWith("B")) {
-                final String[] split = header.substring(1).split(" ");
-                final String name = split[0];
-                final long nextBatch = Long.valueOf(split[1]);
-                server.saveNextBatch(name, nextBatch);
-                reader.readLine();
-            } else {
-                FileContent elementData;
-                elementData = readElementData(header, reader);
-                files.add(elementData);
-            }
-        }
-        LOG.warn("transaction has no ending marker so is incomplete and will not be restored (ending " + reader.getLineNumber() + ")");
-    }
-
-    private FileContent readElementData(final String header, final LineNumberReader reader) throws IOException {
-        final StringBuffer content = new StringBuffer();
-        String line;
-        while ((line = reader.readLine()) != null) {
-            if (line.length() == 0) {
-                break;
-            }
-            content.append(line);
-            content.append('\n');
-        }
-
-        final char command = header.charAt(0);
-        final String[] split = header.substring(1).split(" ");
-        final String type = split[0];
-        final String id = split[1];
-        final String version = split[2];
-        return new FileContent(command, id, null, version, type, content.toString());
-    }
-
-    private void startLogRolling() {
-        final int rollPeriod = config.getInt("fileserver.log-period", 5);
-        final long sleepTime = rollPeriod * 60 * 1000;
-
-        while (awaitConnections) {
-            final LogWriter logger = server.getLogger();
-            if (logger != null) {
-                logger.startNewFile();
-            }
-            try {
-                Thread.sleep(sleepTime);
-            } catch (final InterruptedException ignore) {
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerException.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerException.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerException.java
deleted file mode 100644
index dc0a2fc..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server;
-
-import java.io.IOException;
-
-import org.apache.isis.core.commons.exceptions.IsisException;
-
-public class FileServerException extends IsisException {
-
-    private static final long serialVersionUID = 1L;
-
-    public FileServerException(final String message, final IOException e) {
-        super(message, e);
-    }
-
-    public FileServerException(final String message) {
-        super(message);
-    }
-
-}