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
[19/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/server/FileServerProcessor.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerProcessor.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerProcessor.java
deleted file mode 100644
index 8b22d73..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServerProcessor.java
+++ /dev/null
@@ -1,385 +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.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-
-public class FileServerProcessor {
-
- private static final Logger LOG = Logger.getLogger(FileServerProcessor.class);
-
- private boolean acceptNewRequests = true;
- private LockManager locks;
- private LogWriter logger;
-
- public void startup() {
- Util.ensureDirectoryExists();
- logger = new LogWriter();
- logger.startup();
- locks = new LockManager();
- }
-
- public void shutdown() {
- acceptNewRequests = false;
- locks.waitUntilAllRealeased();
- logger.shutdown();
- }
-
- LogWriter getLogger() {
- return logger;
- }
-
- public void process(final ServerConnection connection) {
- try {
- if (acceptNewRequests) {
- connection.readCommand();
- final char command = connection.getCommand();
- switch (command) {
- case 'L':
- list(connection);
- break;
-
- case 'R':
- read(connection);
- break;
-
- case 'W':
- write(connection);
- break;
-
- case 'I':
- hasInstances(connection);
- break;
-
- case 'S':
- service(connection);
- break;
-
- case 'T':
- saveService(connection);
- break;
-
- case 'N':
- nextSerialBatch(connection);
- break;
-
- case 'X':
- status(connection);
- break;
-
- default:
- LOG.warn("Unrecognised command " + command);
- connection.error("Unrecognised command " + command);
- }
- } else {
- connection.abort();
- }
- } catch (final Exception e) {
- LOG.error("Request failed", e);
- connection.error("Remote exception thrown:\n" + e.getMessage(), e);
-
- } finally {
- connection.close();
- }
- }
-
- private void list(final ServerConnection connection) {
- try {
- connection.endCommand();
- final String type = connection.getRequest();
- int limit = connection.getRequestAsInt();
- if (limit == 0) {
- limit = Integer.MAX_VALUE;
- }
-
- final File[] listFiles = listFiles(type);
- if (listFiles != null) {
- connection.ok();
- for (final File file : listFiles) {
- final String fileName = file.getName();
- final String id = fileName.substring(0, fileName.length() - 5);
- final DataFileReader reader = findInstance(type, id, connection);
- readInstance(reader, connection);
- locks.release(id, getTransactionId());
- if (limit-- < 0) {
- break;
- }
- }
- connection.endBlock();
- } else {
- connection.response("");
- }
-
- } catch (final IOException e) {
- throw new NoSqlStoreException(Util.READ_ERROR, e);
- }
- }
-
- private File[] listFiles(final String type) {
- final File[] listFiles = Util.directory(type).listFiles(new FileFilter() {
- @Override
- public boolean accept(final File pathname) {
- return pathname.getName().endsWith(".data");
- }
- });
- return listFiles;
- }
-
- private void read(final ServerConnection connection) {
- String type = null;
- String id = null;
- try {
- connection.endCommand();
- type = connection.getRequest();
- id = connection.getRequest();
- final DataFileReader reader = findInstance(type, id, connection);
- if (reader == null) {
- connection.notFound(Util.FILE_NOT_FOUND + " for " + type + "/" + id);
- } else {
- connection.ok();
- readInstance(reader, connection);
- }
- } catch (final IOException e) {
- throw new NoSqlStoreException(Util.READ_ERROR + " for " + type + "/" + id, e);
- } finally {
- locks.release(id, getTransactionId());
- }
-
- }
-
- private DataFileReader findInstance(final String type, final String id, final ServerConnection connection) throws IOException {
- LOG.debug("reading file " + id);
- locks.acquireRead(id, getTransactionId());
- try {
- return new DataFileReader(type, id);
- } catch (final FileNotFoundException e) {
- LOG.error(Util.FILE_NOT_FOUND + " for " + type + "/" + id, e);
- return null;
- }
- }
-
- private void readInstance(final DataFileReader reader, final ServerConnection connection) {
- final String data = reader.getData();
- reader.close();
- connection.responseData(data);
- }
-
- private void write(final ServerConnection connection) {
- List<FileContent> files = null;
- try {
- files = getWriteRequests(connection);
- final String error = acquireLocks(files);
- if (error == null) {
- logger.logWrites(files);
- final DataFileWriter content = new DataFileWriter(files);
- content.writeData();
- connection.ok();
- } else {
- connection.error(error);
- }
-
- } catch (final IOException e) {
- throw new NoSqlStoreException("Failed to write data", e);
- } finally {
- if (files != null) {
- releaseLocks(files);
- }
- }
- }
-
- private List<FileContent> getWriteRequests(final ServerConnection connection) throws IOException {
- final ArrayList<FileContent> files = new ArrayList<FileContent>();
- while (connection.readWriteHeaders()) {
- final char command = connection.getCommand();
- final String type = connection.getRequest();
- final String id = connection.getRequest();
- final String currentVersion = connection.getRequest();
- final String newVersion = connection.getRequest();
- LOG.debug("write for " + type + "@" + id + " v." + newVersion);
-
- final String buf = connection.getData();
- files.add(new FileContent(command, id, currentVersion, newVersion, type, buf));
- }
- // connection.endCommand();
- return files;
- }
-
- private String acquireLocks(final List<FileContent> list) throws IOException {
- final Thread transactionId = getTransactionId();
- for (final FileContent item : list) {
- if (!locks.acquireWrite(item.id, transactionId)) {
- return item.type + " being changed by another user, please try again\n" + item.data;
- }
- if (Util.shouldFileExist(item.command)) {
- final DataFileReader dataReader = new DataFileReader(item.type, item.id);
- final String version = dataReader.getVersion();
- if (!version.equals(item.currentVersion)) {
- // String data = dataReader.getData();
- dataReader.close();
- return "mismatch between FileContent version (" + item.currentVersion + ") and DataReader version (" + version + ")";
- }
- dataReader.close();
- }
- }
- return null;
- }
-
- private void releaseLocks(final List<FileContent> list) {
- final Thread transactionId = getTransactionId();
- for (final FileContent item : list) {
- locks.release(item.id, transactionId);
- }
- }
-
- private Thread getTransactionId() {
- return Thread.currentThread();
- }
-
- private void status(final ServerConnection connection) throws IOException {
- connection.endCommand();
- final String request = connection.getRequest();
- if (request.equals("contains-data")) {
- connection.response(Util.isPopulated());
-
- } else {
- connection.error("Unrecognised command " + request);
- }
- }
-
- private void service(final ServerConnection connection) {
- connection.endCommand();
- final String name = connection.getRequest();
- final File file = Util.serviceFile(name);
- if (file.exists()) {
- final String id = readServiceFile(file);
- connection.response(id);
- } else {
- connection.response("null");
- }
- }
-
- private String readServiceFile(final File file) {
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Util.ENCODING));
- final String[] split = reader.readLine().split(" ");
- return split[1];
- } catch (final IOException e) {
- LOG.error("failed to read service file", e);
- throw new FileServerException("Failed to read service file", e);
- } finally {
- try {
- reader.close();
- } catch (final IOException e) {
- LOG.error("failed to close file", e);
- }
- }
- }
-
- private void saveService(final ServerConnection connection) throws IOException {
- connection.endCommand();
- final String name = connection.getRequest();
- final String key = connection.getRequest();
- logger.logServiceEntry(key, name);
- saveService(key, name);
- connection.ok();
- }
-
- void saveService(final String key, final String name) throws FileNotFoundException, IOException, UnsupportedEncodingException {
- FileOutputStream fileOut = null;
- final File file = Util.serviceFile(name);
- try {
- fileOut = new FileOutputStream(file);
- fileOut.write(name.getBytes(Util.ENCODING));
- fileOut.write(' ');
- fileOut.write(key.getBytes(Util.ENCODING));
- } finally {
- if (fileOut != null) {
- try {
- fileOut.close();
- } catch (final IOException e) {
- throw new NoSqlStoreException(e);
- }
- }
- }
- }
-
- private void nextSerialBatch(final ServerConnection connection) throws IOException {
- // TODO lock file first
-
- connection.endCommand();
- final String name = connection.getRequest();
- final int batchSize = connection.getRequestAsInt();
-
- long nextId;
- final File file = Util.serialNumberFile(name);
- if (!file.exists()) {
- nextId = 1;
- LOG.info("Initial ID batch created at " + nextId);
- } else {
- final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Util.ENCODING));
- nextId = Long.valueOf(reader.readLine()).longValue();
- reader.close();
- LOG.info("New ID batch allocated, from " + nextId);
- }
-
- final long newBatchAt = nextId + batchSize;
- logger.logNextSerialBatch(name, newBatchAt);
-
- saveNextBatch(file, newBatchAt);
-
- // TODO remove lock
-
- connection.response(nextId);
- }
-
- private void saveNextBatch(final File file, final long newBatchAt) throws FileNotFoundException, IOException {
- final FileOutputStream fileOutput = new FileOutputStream(file);
- fileOutput.write(Long.toString(newBatchAt).getBytes(Util.ENCODING));
- fileOutput.close();
- }
-
- public void saveNextBatch(final String name, final long nextBatch) throws IOException {
- saveNextBatch(Util.serialNumberFile(name), nextBatch);
- }
-
- private void hasInstances(final ServerConnection connection) throws IOException {
- connection.endCommand();
- final String type = connection.getRequest();
- final File[] listFiles = listFiles(type);
- final boolean hasInstances = listFiles != null && listFiles.length > 0;
- connection.response(hasInstances);
- }
-
-}
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/Lock.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/Lock.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/Lock.java
deleted file mode 100644
index a1f0c93..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/Lock.java
+++ /dev/null
@@ -1,54 +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.util.ArrayList;
-import java.util.List;
-
-class Lock {
-
- private Thread write;
- private final List<Thread> reads = new ArrayList<Thread>();
-
- public boolean isWriteLocked() {
- return write != null;
- }
-
- public void addRead(final Thread transaction) {
- reads.add(transaction);
- }
-
- public void setWrite(final Thread transaction) {
- write = transaction;
- }
-
- public void remove(final Thread transaction) {
- if (write == transaction) {
- write = null;
- } else {
- reads.remove(transaction);
- }
- }
-
- public boolean isEmpty() {
- return write == null && reads.isEmpty();
- }
-
-}
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/LockManager.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LockManager.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LockManager.java
deleted file mode 100644
index e9ab7ba..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LockManager.java
+++ /dev/null
@@ -1,66 +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.util.HashMap;
-import java.util.Map;
-
-public class LockManager {
-
- private final Map<String, Lock> locks = new HashMap<String, Lock>();
-
- public synchronized void acquireRead(final String id, final Thread transaction) {
- final Lock lock = getLock(id);
- lock.addRead(transaction);
- }
-
- public boolean acquireWrite(final String id, final Thread transaction) {
- final Lock lock = getLock(id);
- if (lock.isWriteLocked()) {
- return false;
- }
- lock.setWrite(transaction);
- return true;
- }
-
- private Lock getLock(final String id) {
- Lock lock;
- synchronized (this) {
- lock = locks.get(id);
- if (lock == null) {
- lock = new Lock();
- locks.put(id, lock);
- }
- }
- return lock;
- }
-
- public synchronized void release(final String id, final Thread transaction) {
- final Lock lock = getLock(id);
- lock.remove(transaction);
- if (lock.isEmpty()) {
- locks.remove(id);
- }
- }
-
- public void waitUntilAllRealeased() {
- }
-
-}
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/LogRange.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LogRange.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LogRange.java
deleted file mode 100644
index 1e0c3b3..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LogRange.java
+++ /dev/null
@@ -1,41 +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;
-
-class LogRange {
- private long first = Long.MAX_VALUE;
- private long last = 0;
-
- public long getFirst() {
- return first;
- }
-
- public long getLast() {
- return last;
- }
-
- public boolean noLogFile() {
- return first == Long.MAX_VALUE && last == 0;
- }
-
- public void add(final long sequence) {
- last = Math.max(last, sequence);
- first = Math.min(first, sequence);
- }
-}
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/LogWriter.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LogWriter.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LogWriter.java
deleted file mode 100644
index 5b02a63..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/LogWriter.java
+++ /dev/null
@@ -1,149 +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.DataOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-
-public class LogWriter {
-
- private DataOutputStream writer;
- private boolean startNewFile = false;
- private long nextLogIdToWrite;
-
- public void startNewFile() {
- // don't start new file if old one is empty
- final File file = Util.logFile(nextLogIdToWrite);
- if (file.exists() && file.length() > 0) {
- startNewFile = true;
- }
- }
-
- public synchronized void logNextSerialBatch(final String name, final long newBatchAt) {
- startNewFileIfNeeded();
- try {
- writer.write(("#transaction started - " + new Date().toString() + "\n").getBytes());
- writer.write('B');
- writer.write(name.getBytes(Util.ENCODING));
- writer.write(' ');
- writer.write(Long.toString(newBatchAt).getBytes(Util.ENCODING));
- writer.write('\n');
- writer.write('\n');
- writer.write("#transaction ended\n\n".getBytes());
- writer.flush();
- } catch (final IOException e) {
- throw new NoSqlStoreException("Failed to write serial number data to log file", e);
- }
-
- }
-
- public synchronized void logServiceEntry(final String key, final String name) {
- startNewFileIfNeeded();
- try {
- writer.write(("#transaction started - " + new Date().toString() + "\n").getBytes());
- writer.write('S');
- writer.write(key.getBytes(Util.ENCODING));
- writer.write(' ');
- writer.write(name.getBytes(Util.ENCODING));
- writer.write('\n');
- writer.write('\n');
- writer.write("#transaction ended\n\n".getBytes());
- writer.flush();
- } catch (final IOException e) {
- throw new NoSqlStoreException("Failed to write service entry data to log file", e);
- }
- }
-
- public synchronized void logWrites(final List<FileContent> items) {
- startNewFileIfNeeded();
- try {
- writer.write(("#transaction started - " + new Date().toString() + "\n").getBytes());
- for (final FileContent content : items) {
- writer.write(content.command);
- content.write(writer);
- writer.write('\n');
- }
- writer.write("#transaction ended\n\n".getBytes());
- writer.flush();
- } catch (final IOException e) {
- throw new NoSqlStoreException("Failed to write data to log file", e);
- }
- }
-
- private void startNewFileIfNeeded() {
- if (startNewFile) {
- close();
- openNewFile();
- startNewFile = false;
- }
- }
-
- private void openNewFile() {
- nextLogIdToWrite++;
- final File file = Util.logFile(nextLogIdToWrite);
- if (file.exists()) {
- throw new NoSqlStoreException("Log file already exists");
- }
- openFile(file);
- }
-
- private void openFile(final File file) {
- try {
- writer = new DataOutputStream(new FileOutputStream(file));
- startNewFile = false;
- } catch (final IOException e) {
- throw new NoSqlStoreException("Failed to open log file", e);
- }
- }
-
- public void startup() {
- nextLogIdToWrite = Util.logFileRange().getLast();
- startNewFile();
- if (!startNewFile) {
- final File file = Util.logFile(nextLogIdToWrite);
- openFile(file);
- } else {
- openNewFile();
- }
- }
-
- public void shutdown() {
- close();
- }
-
- private void close() {
- try {
- writer.close();
- } catch (final IOException e) {
- throw new NoSqlStoreException("Falied to close log file", e);
- }
- }
-
- public synchronized boolean isWritten(final long logId) {
- startNewFileIfNeeded();
- return logId < nextLogIdToWrite;
- }
-}
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/ServerConnection.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/ServerConnection.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/ServerConnection.java
deleted file mode 100644
index 9d16e7f..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/ServerConnection.java
+++ /dev/null
@@ -1,237 +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.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.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.RemotingException;
-
-public class ServerConnection {
-
- private static final Logger LOG = Logger.getLogger(ServerConnection.class);
-
- private final BufferedReader reader;
- private final PrintWriter writer;
- private final OutputStream outputStream;
- private final InputStream inputStream;
- private int header;
- private String[] headers;
- private char command;
-
- public ServerConnection(final InputStream input, final OutputStream output) {
- outputStream = Util.trace(output, true);
- inputStream = Util.trace(input, true);
- this.reader = new BufferedReader(new InputStreamReader(inputStream, Util.ENCODING));
- this.writer = new PrintWriter(new OutputStreamWriter(outputStream, Util.ENCODING));
- }
-
- public void readCommand() {
- readHeaders();
- }
-
- private void logFailure() {
- LOG.error("(failed " + inputStream + ")");
- LOG.error("(failed " + outputStream + ")");
- }
-
- public void logComplete() {
- LOG.debug("(complete " + inputStream + ")");
- LOG.debug("(complete " + outputStream + ")");
- }
-
- boolean readHeaders() {
- try {
- final String line = reader.readLine();
- LOG.debug("header: " + line);
- if (line == null) {
- logFailure();
- throw new RemotingException("stream ended prematurely while reading header, aborting request");
- }
- if (line.length() == 0) {
- return false;
- } else {
- command = line.charAt(0);
- headers = line.substring(1).split(" ");
- this.header = 0;
- return true;
- }
- } catch (final IOException e) {
- logFailure();
- throw new NoSqlStoreException(e);
- }
- }
-
- public boolean readWriteHeaders() {
- final boolean readHeaders = readHeaders();
- if (readHeaders && headers.length != 4) {
- logFailure();
- throw new RemotingException("invalid header string, aborting request");
- }
- return readHeaders;
- }
-
- public String getRequest() {
- return headers[header++];
- }
-
- public int getRequestAsInt() {
- return Integer.valueOf(getRequest()).intValue();
- }
-
- public char getCommand() {
- return command;
- }
-
- public void endCommand() {
- try {
- final String line = reader.readLine();
- if (line == null) {
- logFailure();
- throw new RemotingException("stream ended prematurely while reading end of command, aborting request");
- }
- if (line.length() > 0) {
- logFailure();
- throw new RemotingException("command didn't end with an empty blank line, aborting request");
- }
- } catch (final IOException e) {
- logFailure();
- throw new NoSqlStoreException(e);
- }
- }
-
- /**
- * Reads all the data up until the next blank line.
- */
- public String getData() {
- try {
- final StringBuffer buffer = new StringBuffer();
- String line;
- while (true) {
- line = reader.readLine();
- if (line == null) {
- logFailure();
- throw new RemotingException("stream ended prematurely while reading data, aborting request");
- }
- if (line.length() == 0) {
- break;
- }
- buffer.append(line);
- buffer.append('\n');
- }
- return buffer.toString();
- } catch (final IOException e) {
- logFailure();
- throw new RemotingException(e);
- }
- }
-
- /*
- * public void getTermination() { try { String line = reader.readLine(); if
- * (line == null || !line.equals("***")) { logFailure(); throw new
- * RemotingException
- * ("stream ended abruptly while reading data, aborting request"); } } catch
- * (IOException e) { logFailure(); throw new RemotingException(e); }
- *
- * }
- */
- public void notFound(final String message) {
- writer.print("not-found");
- writer.print('\n');
- writer.print(message);
- writer.print('\n');
- writer.flush();
- }
-
- public void error(final String message) {
- writer.print("error");
- writer.print('\n');
- writer.print(message);
- writer.print('\n');
- writer.flush();
- }
-
- public void error(final String message, final Exception exception) {
- error(message);
- exception.printStackTrace(writer);
- writer.print('\n');
- writer.print('\n');
- writer.flush();
- }
-
- private void write(final String result) {
- writer.print(result);
- writer.print('\n');
- writer.flush();
- }
-
- public void ok() {
- response(Util.OK, "");
- }
-
- public void abort() {
- response(Util.ABORT, "");
- }
-
- public void response(final boolean flag) {
- response(Util.OK, " " + (flag ? "true" : "false"));
- }
-
- public void response(final long value) {
- response(Util.OK, " " + Long.toString(value));
- }
-
- public void response(final String message) {
- response(Util.OK, " " + message);
- }
-
- private void response(final String status, final String message) {
- final String response = status + message;
- LOG.debug("response: " + response);
- write(response);
- }
-
- public void responseData(final String data) {
- write(data);
- }
-
- public void close() {
- try {
- reader.close();
- writer.close();
- } catch (final IOException e) {
- logFailure();
- throw new RemotingException(e);
- }
- }
-
- public void endBlock() {
- writer.print('\n');
- }
-
-}
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/Util.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/Util.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/Util.java
deleted file mode 100644
index 7a94331..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/Util.java
+++ /dev/null
@@ -1,330 +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.FileFilter;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.charset.Charset;
-
-import org.apache.log4j.Logger;
-
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-
-public class Util {
-
- private static final Logger LOG = Logger.getLogger(Util.class);
-
- private static final String DEFAULT_DIRECTORY = "data";
- private static final String SERVICES_DIRECTORY = "services";
- private static final String LOGS_DIRECTORY = "logs";
- private static final String LOGS_ARCHIVE_DIRECTORY = "archive";
- public static final String ABORT = "abort";
- public static final String OK = "ok";
- public static final String READ_ERROR = "Read error";
- public static final String FILE_NOT_FOUND = "File not found";
- private static final int NEWLINE = '\n';
-
- private static File dataDirectory = new File(DEFAULT_DIRECTORY);
- private static File serviceDirectory = new File(DEFAULT_DIRECTORY, SERVICES_DIRECTORY);
- private static File logDirectory = new File(DEFAULT_DIRECTORY, LOGS_DIRECTORY);
- private static File logArchiveDirectory = new File(DEFAULT_DIRECTORY, LOGS_ARCHIVE_DIRECTORY);
-
- static void setDirectory(final String data, final String services, final String logs, final String archive) {
- final String directory = data == null ? DEFAULT_DIRECTORY : data;
- Util.dataDirectory = new File(directory);
- Util.serviceDirectory = new File(directory, services == null ? SERVICES_DIRECTORY : services);
- Util.logDirectory = new File(directory, logs == null ? LOGS_DIRECTORY : logs);
- Util.logArchiveDirectory = new File(directory, archive == null ? LOGS_ARCHIVE_DIRECTORY : archive);
- }
-
- static void ensureDirectoryExists() {
- if (!serviceDirectory.exists()) {
- serviceDirectory.mkdirs();
- }
- if (!logDirectory.exists()) {
- logDirectory.mkdirs();
- }
- if (!logArchiveDirectory.exists()) {
- logArchiveDirectory.mkdirs();
- }
- }
-
- public static boolean isPopulated() {
- final FileFilter filter = new FileFilter() {
- @Override
- public boolean accept(final File pathname) {
- final String name = pathname.getName();
- return name.endsWith(".data") || name.endsWith(".id") || name.endsWith(".log");
- }
- };
-
- final File[] data = dataDirectory.listFiles();
- for (final File directory : data) {
- if (directory.isDirectory() && directory.listFiles(filter).length > 1) {
- return true;
- }
- }
- return false;
- }
-
- public static boolean hasInstances(final String type) {
- final FileFilter filter = new FileFilter() {
- @Override
- public boolean accept(final File pathname) {
- final String name = pathname.getName();
- return name.endsWith(".data") || name.endsWith(".id") || name.endsWith(".log");
- }
- };
-
- final File[] data = dataDirectory.listFiles();
- for (final File directory : data) {
- if (directory.isDirectory() && directory.listFiles(filter).length > 1) {
- return true;
- }
- }
- return false;
- }
-
- public static String xxreadNext(final InputStream input) throws IOException {
- final byte[] buffer = new byte[100];
- int c;
- int i = 0;
- // TODO deal with buffer overrun
- while ((c = input.read()) != ' ' && c != '\n' && c != -1) {
- buffer[i++] = (byte) c;
- }
- if (i == 0) {
- throw new NoSqlStoreException("No data read from " + input);
- }
- final String read = new String(buffer, 0, i);
- LOG.debug("read " + read);
- return read;
- }
-
- public static byte[] xxreadData(final InputStream input) throws IOException {
- // TODO increase to suitable size
- byte[] buf = new byte[32];
- int i = 0;
- int c1 = input.read();
- if (c1 == '.') {
- return null;
- }
- int c2 = input.read();
- boolean isEnd;
- do {
- if (i == buf.length) {
- final byte[] newBuf = new byte[buf.length * 2];
- System.arraycopy(buf, 0, newBuf, 0, buf.length);
- buf = newBuf;
- }
- buf[i++] = (byte) c1;
- c1 = c2;
- c2 = input.read();
- isEnd = (c1 == NEWLINE && c2 == NEWLINE) || c2 == -1;
- } while (!isEnd);
- return buf;
- }
-
- static File directory(final String type) {
- return new File(dataDirectory, type);
- }
-
- static File dataFile(final String type, final String id) {
- final File dir = directory(type);
- return new File(dir, id + ".data");
- }
-
- public static File serviceFile(final String name) {
- return new File(serviceDirectory, name + ".id");
- }
-
- public static File serialNumberFile(final String name) {
- return new File(dataDirectory, "serialnumbers" + name.trim() + ".data");
- }
-
- static File logFile(final long id) {
- return new File(logDirectory, "recovery" + id + ".log");
- }
-
- static File tmpLogFile(final long id) {
- return new File(logDirectory, "recovery" + id + ".log.tmp");
- }
-
- public static File archiveLogFile(final long id) {
- return new File(logArchiveDirectory, "recovery" + id + ".log");
- }
-
- static LogRange logFileRange() {
- final LogRange logRange = new LogRange();
- final File[] listFiles = logDirectory.listFiles();
- if (listFiles != null) {
- for (final File file : listFiles) {
- final String name = file.getName();
- final String substring = name.substring(8, name.length() - 4);
- try {
- final long sequence = Long.parseLong(substring);
- logRange.add(sequence);
- } catch (final NumberFormatException ignore) {
- }
- }
- }
- return logRange;
- }
-
- static final char DELETE = 'D';
-
- public static final Charset ENCODING = Charset.forName("utf-8");
-
- public static boolean isDelete(final char command) {
- return command == Util.DELETE;
- }
-
- public static boolean isSave(final char command) {
- return command != Util.DELETE;
- }
-
- public static boolean shouldFileExist(final char command) {
- return command == 'D' || command == 'U';
- }
-
- public static InputStream trace(final InputStream inputStream, final boolean isOn) {
- return !isOn ? inputStream : new InputStream() {
- StringBuffer log = new StringBuffer();
-
- @Override
- public int read() throws IOException {
- final int b = inputStream.read();
- log(b);
- return b;
- }
-
- private void log(final int b) {
- log.append(b < 32 ? ("<" + b + ">" + (char) b) : (char) b);
- // System.out.print(b < 32 ? ("<" + b + ">" + (char) b) : (char)
- // b);
- }
-
- @Override
- public int read(final byte[] b) throws IOException {
- final int read = inputStream.read(b);
- for (int i = 0; i < read; i++) {
- log(b[i]);
- }
- return read;
- }
-
- @Override
- public int read(final byte[] b, final int off, final int len) throws IOException {
- final int read = inputStream.read(b, off, len);
- for (int i = 0; i < read; i++) {
- log(b[off + i]);
- }
- return read;
- }
-
- @Override
- public int available() throws IOException {
- return inputStream.available();
- }
-
- @Override
- public long skip(final long n) throws IOException {
- return inputStream.skip(n);
- }
-
- @Override
- public void close() throws IOException {
- // LOG.debug("in - " + log.toString());
- inputStream.close();
- }
-
- @Override
- public String toString() {
- return "in#" + Long.toHexString(hashCode()) + " " + log;
- }
- };
- }
-
- public static OutputStream trace(final OutputStream outputStream, final boolean isOn) {
- return !isOn ? outputStream : new OutputStream() {
- StringBuffer log = new StringBuffer();
-
- @Override
- public void write(final int b) throws IOException {
- log(b);
- outputStream.write(b);
- }
-
- private void log(final int b) {
- log.append(b < 32 ? ("<" + b + ">" + (char) b) : (char) b);
- // System.out.print(b < 32 ? ("<" + b + ">" + (char) b) : (char)
- // b);
- }
-
- @Override
- public void write(final byte[] b) throws IOException {
- for (final byte element : b) {
- log(element);
- }
- outputStream.write(b);
- }
-
- @Override
- public void write(final byte[] b, final int off, final int len) throws IOException {
- for (int i = 0; i < len; i++) {
- log(b[off + i]);
- }
- outputStream.write(b, off, len);
- }
-
- @Override
- public void flush() throws IOException {
- outputStream.flush();
- }
-
- @Override
- public void close() throws IOException {
- // LOG.debug("out - " + log.toString());
- outputStream.close();
- }
-
- @Override
- public String toString() {
- return "out#" + Long.toHexString(hashCode()) + " " + log;
- }
- };
- }
-
- public static void closeSafely(final FileOutputStream output) {
- if (output != null) {
- try {
- output.flush();
- output.close();
- } catch (final IOException e) {
- // throw new ObjectAdapterRuntimeException(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/mongo/MongoClientCommandContext.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java
deleted file mode 100644
index 97775fb..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java
+++ /dev/null
@@ -1,75 +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.mongo;
-
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-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.db.StateWriter;
-import org.apache.log4j.Logger;
-
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-import com.mongodb.DBObject;
-
-
-public class MongoClientCommandContext implements NoSqlCommandContext {
-
- private static final Logger LOG = Logger.getLogger(MongoClientCommandContext.class);
- private final DB db;
-
- public MongoClientCommandContext(DB db) {
- this.db = db;
- }
-
- @Override
- public void start() {}
-
- @Override
- public void end() {}
-
- @Override
- public StateWriter createStateWriter(final ObjectSpecId objectSpecId) {
- return new MongoStateWriter(db, objectSpecId);
- }
-
- @Override
- public void delete(final ObjectSpecId objectSpecId, final String mongoId, final String version, final Oid oid) {
- final DBCollection instances = db.getCollection(objectSpecId.asString());
- final DBObject object = instances.findOne(mongoId);
- if (!object.get(PropertyNames.VERSION).equals(version)) {
- throw new ConcurrencyException("Could not delete object of different version", oid);
- }
- instances.remove(object);
- LOG.info("removed " + oid);
- }
-
- @Override
- public void insert(final StateWriter writer) {
- ((MongoStateWriter) writer).flush();
- }
-
- @Override
- public void update(final StateWriter writer) {
- ((MongoStateWriter) writer).flush();
- }
-
-}
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/mongo/MongoDb.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java
deleted file mode 100644
index 39af1e7..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java
+++ /dev/null
@@ -1,260 +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.mongo;
-
-import java.net.UnknownHostException;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-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.objectstores.nosql.db.StateWriter;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
-import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.log4j.Logger;
-
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-import com.mongodb.DBCursor;
-import com.mongodb.DBObject;
-import com.mongodb.Mongo;
-import com.mongodb.MongoException;
-
-public class MongoDb implements NoSqlDataDatabase {
-
- private static final String SERIALNUMBERS_COLLECTION_NAME = "serialnumbers";
-
- private static final Logger LOG = Logger.getLogger(MongoDb.class);
-
- private static final int DEFAULT_PORT = 27017;
-
- private final String host;
- private final int port;
- private final String dbName;
- private final KeyCreatorDefault keyCreator;
-
- private Mongo mongo;
- private DB db;
-
- public MongoDb(final String host, final int port, final String name, final KeyCreatorDefault keyCreator) {
- this.host = host;
- this.port = port == 0 ? DEFAULT_PORT : port;
- this.dbName = name;
- this.keyCreator = keyCreator;
- }
-
- public KeyCreatorDefault getKeyCreator() {
- return keyCreator;
- }
-
- @Override
- public void open() {
- try {
- if (mongo == null) {
- mongo = new Mongo(host, port);
- db = mongo.getDB(dbName);
- db.setWriteConcern(com.mongodb.WriteConcern.SAFE);
- LOG.info("opened database (" + dbName + "): " + mongo);
- } else {
- LOG.info(" using opened database " + db);
- }
- } catch (final UnknownHostException e) {
- throw new NoSqlStoreException(e);
- } catch (final MongoException e) {
- throw new NoSqlStoreException(e);
- }
- }
-
- @Override
- public void close() {
- }
-
- public NoSqlCommandContext createTransactionContext() {
- return null;
- }
-
- //////////////////////////////////////////////////
- // contains data
- //////////////////////////////////////////////////
-
- @Override
- public boolean containsData() {
- return db.getCollectionNames().size() > 0;
- }
-
-
- //////////////////////////////////////////////////
- // serial numbers
- //////////////////////////////////////////////////
-
- @Override
- public long nextSerialNumberBatch(final ObjectSpecId name, final int batchSize) {
- long next = readSerialNumber();
- writeSerialNumber(next + batchSize);
- return next + 1;
- }
-
- private void writeSerialNumber(final long serialNumber) {
- final DBCollection system = db.getCollection(SERIALNUMBERS_COLLECTION_NAME);
- DBObject object = system.findOne();
- if (object == null) {
- object = new BasicDBObject();
- }
- object.put("next-id", Long.toString(serialNumber));
- system.save(object);
- LOG.info("serial number written: " + serialNumber);
- }
-
- private long readSerialNumber() {
- final DBCollection system = db.getCollection(SERIALNUMBERS_COLLECTION_NAME);
- final DBObject data = system.findOne();
- if (data == null) {
- return 0;
- } else {
- final String number = (String) data.get("next-id");
- LOG.info("serial number read: " + number);
- return Long.valueOf(number);
- }
- }
-
- //////////////////////////////////////////////////
- // hasInstances, instancesOf
- //////////////////////////////////////////////////
-
- @Override
- public boolean hasInstances(final ObjectSpecId objectSpecId) {
- final DBCollection instances = db.getCollection(objectSpecId.asString());
- return instances.getCount() > 0;
- }
-
- @Override
- public Iterator<StateReader> instancesOf(final ObjectSpecId objectSpecId) {
- final DBCollection instances = db.getCollection(objectSpecId.asString());
- final DBCursor cursor = instances.find();
- LOG.info("searching for instances of: " + objectSpecId);
- return new Iterator<StateReader>() {
- @Override
- public boolean hasNext() {
- return cursor.hasNext();
- }
-
- @Override
- public StateReader next() {
- return new MongoStateReader(cursor.next());
- }
-
- @Override
- public void remove() {
- throw new NoSqlStoreException("Can't remove elements");
- }
-
- };
- }
-
- @Override
- public Iterator<StateReader> instancesOf(ObjectSpecId objectSpecId, ObjectAdapter pattern) {
- final DBCollection instances = db.getCollection(objectSpecId.asString());
-
- // REVIEW check the right types are used in matches
- final BasicDBObject query = new BasicDBObject();
- for ( ObjectAssociation association : pattern.getSpecification().getAssociations()) {
- ObjectAdapter field = association.get(pattern);
- if (!association.isEmpty(pattern)) {
- if (field.isValue()) {
- query.put(association.getIdentifier().getMemberName(), field.titleString());
- } else if (association.isOneToOneAssociation()) {
- query.put(association.getIdentifier().getMemberName(), field.getOid());
- }
- }
- }
- final DBCursor cursor = instances.find(query);
- LOG.info("searching for instances of: " + objectSpecId);
- return new Iterator<StateReader>() {
- @Override
- public boolean hasNext() {
- return cursor.hasNext();
- }
-
- @Override
- public StateReader next() {
- return new MongoStateReader(cursor.next());
- }
-
- @Override
- public void remove() {
- throw new NoSqlStoreException("Can't remove elements");
- }
-
- };
- }
-
- @Override
- public StateReader getInstance(final String key, final ObjectSpecId objectSpecId) {
- return new MongoStateReader(db, objectSpecId, key);
- }
-
- //////////////////////////////////////////////////
- // write, delete
- //////////////////////////////////////////////////
-
- public StateWriter createStateWriter(final ObjectSpecId objectSpecId) {
- return new MongoStateWriter(db, objectSpecId);
- }
-
-
- @Override
- public void write(final List<PersistenceCommand> commands) {
- final NoSqlCommandContext context = new MongoClientCommandContext(db);
- for (final PersistenceCommand command : commands) {
- command.execute(context);
- }
- }
-
-
- //////////////////////////////////////////////////
- // services
- //////////////////////////////////////////////////
-
- @Override
- public void addService(final ObjectSpecId objectSpecId, final String key) {
- final DBCollection services = db.getCollection("services");
- services.insert(new BasicDBObject().append("name", objectSpecId.asString()).append("key", key));
- LOG.info("service added " + objectSpecId + ":" + key);
- }
-
- @Override
- public String getService(final ObjectSpecId objectSpecId) {
- final DBCollection services = db.getCollection("services");
- final DBObject object = services.findOne(new BasicDBObject().append("name", objectSpecId.asString()));
- if (object == null) {
- return null;
- } else {
- final String id = (String) object.get("key");
- LOG.info("service found " + objectSpecId + ":" + id);
- return id;
- }
- }
-}
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/mongo/MongoPersistorMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoPersistorMechanismInstaller.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoPersistorMechanismInstaller.java
deleted file mode 100644
index cf3832e..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoPersistorMechanismInstaller.java
+++ /dev/null
@@ -1,50 +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.mongo;
-
-import org.apache.isis.core.commons.config.ConfigurationConstants;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlPersistorMechanismInstaller;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
-
-public class MongoPersistorMechanismInstaller extends NoSqlPersistorMechanismInstaller {
-
- private static final String STRING = ConfigurationConstants.ROOT + "nosql.mongodb.";
- private static final String DB_HOST = STRING + "host";
- private static final String DB_PORT = STRING + "port";
- private static final String DB_NAME = STRING + "name";
-
- public MongoPersistorMechanismInstaller() {
- super("mongodb");
- }
-
- @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 String name = configuration.getString(DB_NAME, "isis");
- final KeyCreatorDefault keyCreator = new KeyCreatorDefault();
- db = new MongoDb(host, port, name, keyCreator);
- 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/mongo/MongoStateReader.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java
deleted file mode 100644
index d4c059b..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java
+++ /dev/null
@@ -1,121 +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.mongo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
-import org.apache.isis.runtimes.dflt.runtime.persistence.ObjectNotFoundException;
-import org.apache.log4j.Logger;
-
-import com.mongodb.BasicDBList;
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-import com.mongodb.DBObject;
-
-public class MongoStateReader implements StateReader {
-
- private static final Logger LOG = Logger.getLogger(MongoStateReader.class);
- private final DBObject instance;
-
- public MongoStateReader(final DB db, final ObjectSpecId objectSpecId, final String mongoId) {
- final DBCollection instances = db.getCollection(objectSpecId.asString());
- instance = instances.findOne(mongoId);
- if (instance == null) {
- throw new ObjectNotFoundException(mongoId);
- }
- if(LOG.isDebugEnabled()) {
- LOG.debug("loading " + instance);
- }
- }
-
- public MongoStateReader(final DBObject instance) {
- this.instance = instance;
- if(LOG.isDebugEnabled()) {
- LOG.debug("loading " + instance);
- }
- }
-
- @Override
- public long readLongField(final String id) {
- final Object value = instance.get(id);
- if (value == null || value.equals("null")) {
- return 0;
- }
- return Long.valueOf((String) value);
- }
-
- @Override
- public String readField(final String name) {
- final Object value = instance.get(name);
- if (value == null || value.equals("null")) {
- return null;
- } else {
- return (String) value;
- }
- }
-
- @Override
- public String readEncrytionType() {
- return (String) instance.get(PropertyNames.ENCRYPT);
- }
-
- @Override
- public String readOid() {
- return readField(PropertyNames.OID);
- }
-
- @Override
- public String readVersion() {
- return readField(PropertyNames.VERSION);
- }
-
- @Override
- public String readUser() {
- return readField(PropertyNames.USER);
- }
-
- @Override
- public String readTime() {
- return readField(PropertyNames.TIME);
- }
-
- @Override
- public StateReader readAggregate(final String id) {
- DBObject object = (DBObject) instance.get(id);
- return object == null ? null : new MongoStateReader(object);
- }
-
- @Override
- public List<StateReader> readCollection(final String id) {
- BasicDBList array = (BasicDBList) instance.get(id);
- final List<StateReader> readers = new ArrayList<StateReader>();
- if (array != null) {
- final int size = array.size();
- for (int i = 0; i < size; i++) {
- readers.add(new MongoStateReader((DBObject) array.get(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/mongo/MongoStateWriter.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java
deleted file mode 100644
index 2996b2e..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java
+++ /dev/null
@@ -1,129 +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.mongo;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
-import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-import org.apache.log4j.Logger;
-
-import com.google.common.collect.Lists;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-
-public class MongoStateWriter implements StateWriter {
-
- private static final Logger LOG = Logger.getLogger(MongoStateWriter.class);
- private final DB db;
- private final BasicDBObject dbObject;
- private DBCollection instances;
-
- public MongoStateWriter(final DB db, final ObjectSpecId objectSpecId) {
- this(db);
- instances = db.getCollection(objectSpecId.asString());
- }
-
- private MongoStateWriter(final DB db) {
- this.db = db;
- dbObject = new BasicDBObject();
- }
-
- public void flush() {
- instances.save(dbObject);
- if(LOG.isDebugEnabled()) {
- LOG.debug("saved " + dbObject);
- }
- }
-
- @Override
- public void writeOid(final TypedOid typedOid) {
- writeField(PropertyNames.OID, typedOid.enString(getOidMarshaller()));
- if(typedOid instanceof RootOid) {
- RootOid rootOid = (RootOid) typedOid;
- writeField(PropertyNames.MONGO_INTERNAL_ID, rootOid.getIdentifier());
- }
- }
-
- @Override
- public void writeField(final String id, final String data) {
- dbObject.put(id, data);
- }
-
- @Override
- public void writeField(final String id, final long l) {
- dbObject.put(id, Long.toString(l));
- }
-
- @Override
- public void writeEncryptionType(final String type) {
- writeField(PropertyNames.ENCRYPT, type);
- }
-
- @Override
- public void writeVersion(final String currentVersion, final String 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 StateWriter addAggregate(final String id) {
- final MongoStateWriter stateWriter = new MongoStateWriter(db);
- dbObject.put(id, stateWriter.dbObject);
- return stateWriter;
- }
-
- @Override
- public StateWriter createElementWriter() {
- return new MongoStateWriter(db);
- }
-
- @Override
- public void writeCollection(final String id, final List<StateWriter> elements) {
- final List<BasicDBObject> collection = Lists.newArrayList();
- for (final StateWriter writer : elements) {
- collection.add(((MongoStateWriter) writer).dbObject);
- }
- dbObject.put(id, collection);
- }
-
- // ///////////////////////////////////////////////////////////////////
- // dependencies
- // ///////////////////////////////////////////////////////////////////
-
- 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/mongo/PropertyNames.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java
deleted file mode 100644
index adedb84..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java
+++ /dev/null
@@ -1,37 +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.mongo;
-
-public final class PropertyNames {
-
- private PropertyNames(){}
-
- static final String ENCRYPT = "_encrypt";
-
-// static final String TYPE = "_type";
-// static final String ID = "_id";
-
- static final String MONGO_INTERNAL_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/encryption/DataEncryption.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/DataEncryption.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/DataEncryption.java
deleted file mode 100644
index 26a1802..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/DataEncryption.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.encryption;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-
-public interface DataEncryption {
-
- void init(IsisConfiguration configuration);
-
- String getType();
-
- String encrypt(String plainText);
-
- String decrypt(String encryptedText);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/951a0fe4/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/aes/DataEncryptionAes.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/aes/DataEncryptionAes.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/aes/DataEncryptionAes.java
deleted file mode 100644
index ec7185c..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/aes/DataEncryptionAes.java
+++ /dev/null
@@ -1,74 +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.encryption.aes;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
-
-/**
- * NOTE this does not work at the moment
- */
-public class DataEncryptionAes implements DataEncryption {
-
- private static final String AES = "AES";
- private final byte[] specKey;
-
- public DataEncryptionAes() {
- specKey = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 };
- }
-
- @Override
- public void init(final IsisConfiguration configuration) {
- }
-
- @Override
- public String getType() {
- return AES;
- }
-
- @Override
- public String encrypt(final String plainText) {
- try {
- final SecretKeySpec key = new SecretKeySpec(specKey, AES);
- final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key);
- return new String(cipher.doFinal(plainText.getBytes()));
- } catch (final Exception e) {
- throw new NoSqlStoreException(e);
- }
- }
-
- @Override
- public String decrypt(final String encryptedText) {
- try {
- final SecretKeySpec key = new SecretKeySpec(specKey, AES);
- final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
- cipher.init(Cipher.DECRYPT_MODE, key);
- final byte[] decrypted = cipher.doFinal(encryptedText.getBytes());
- return new String(decrypted);
- } catch (final Exception e) {
- throw new NoSqlStoreException(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/encryption/blowfish/DataEncryptionBlowfishAbstract.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/blowfish/DataEncryptionBlowfishAbstract.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/blowfish/DataEncryptionBlowfishAbstract.java
deleted file mode 100644
index 1c09e84..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/blowfish/DataEncryptionBlowfishAbstract.java
+++ /dev/null
@@ -1,70 +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.encryption.blowfish;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
-
-public abstract class DataEncryptionBlowfishAbstract implements DataEncryption {
-
- private static final String BLOWFISH = "Blowfish";
- private byte[] specKey;
-
- @Override
- public void init(final IsisConfiguration configuration) {
- specKey = secretKey(configuration);
- }
-
- public abstract byte[] secretKey(IsisConfiguration configuration);
-
- @Override
- public String getType() {
- return BLOWFISH;
- }
-
- @Override
- public String encrypt(final String plainText) {
- try {
- final SecretKeySpec key = new SecretKeySpec(specKey, BLOWFISH);
- final Cipher cipher = Cipher.getInstance(BLOWFISH);
- cipher.init(Cipher.ENCRYPT_MODE, key);
- return new String(cipher.doFinal(plainText.getBytes()));
- } catch (final Exception e) {
- throw new NoSqlStoreException(e);
- }
- }
-
- @Override
- public String decrypt(final String encryptedText) {
- try {
- final SecretKeySpec key = new SecretKeySpec(specKey, BLOWFISH);
- final Cipher cipher = Cipher.getInstance(BLOWFISH);
- cipher.init(Cipher.DECRYPT_MODE, key);
- final byte[] decrypted = cipher.doFinal(encryptedText.getBytes());
- return new String(decrypted);
- } catch (final Exception e) {
- throw new NoSqlStoreException(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/encryption/blowfish/DataEncryptionBlowfishUsingConfiguration.java
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/blowfish/DataEncryptionBlowfishUsingConfiguration.java b/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/blowfish/DataEncryptionBlowfishUsingConfiguration.java
deleted file mode 100644
index c3c5ee2..0000000
--- a/component/objectstore/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/encryption/blowfish/DataEncryptionBlowfishUsingConfiguration.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.encryption.blowfish;
-
-import org.apache.isis.core.commons.config.ConfigurationConstants;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-
-public class DataEncryptionBlowfishUsingConfiguration extends DataEncryptionBlowfishAbstract {
-
- private static final String ENCRYPTION_KEY = ConfigurationConstants.ROOT + "nosql.encryption.blowfish-key";
-
- @Override
- public byte[] secretKey(final IsisConfiguration configuration) {
- final String key = configuration.getString(ENCRYPTION_KEY);
- if (key == null) {
- throw new NoSqlStoreException("No blowfish encryption key specified in the configuration file (key: " + ENCRYPTION_KEY + ")");
- }
- return key.getBytes();
- }
-
-}