001: /*
002: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
003: * notice. All rights reserved.
004: */
005: package com.tc.objectserver.persistence.impl;
006:
007: import com.tc.io.serializer.api.StringIndex;
008: import com.tc.logging.TCLogger;
009: import com.tc.logging.TCLogging;
010: import com.tc.memorydatastore.client.MemoryDataStoreClient;
011: import com.tc.objectserver.persistence.api.ClassPersistor;
012: import com.tc.objectserver.persistence.api.ClientStatePersistor;
013: import com.tc.objectserver.persistence.api.ManagedObjectPersistor;
014: import com.tc.objectserver.persistence.api.PersistenceTransactionProvider;
015: import com.tc.objectserver.persistence.api.PersistentCollectionFactory;
016: import com.tc.objectserver.persistence.api.PersistentMapStore;
017: import com.tc.objectserver.persistence.api.Persistor;
018: import com.tc.objectserver.persistence.api.TransactionPersistor;
019: import com.tc.properties.TCPropertiesImpl;
020: import com.tc.util.sequence.MutableSequence;
021:
022: public class MemoryStorePersistor implements Persistor {
023: private static final String ROOT_DB_NAME = "roots";
024: private static final String OBJECT_DB_NAME = "objects";
025: private static final String TRANSACTION_DB_NAME = "transactions";
026: private static final String CLUSTER_STATE_STORE = "clusterstatestore";
027: private static final String MAP_DB_NAME = "mapsdatabase";
028:
029: private final ClientStatePersistor clientStatePersistor;
030: private final StringIndex stringIndex;
031: private final ManagedObjectPersistor managedObjectPersistor;
032: private final ClassPersistor clazzPersistor;
033: private final PersistentMapStore clusterStateStore;
034: private final TransactionPersistor transactionPerisistor;
035: private final MutableSequence mutableSequence;
036: private final PersistenceTransactionProvider persistenceTransactionProvider;
037: private final MemoryStoreCollectionFactory memoryStoreCollectionFactory;
038: private final MemoryStoreCollectionsPersistor memoryStoreCollectionsPersistor;
039:
040: private final String PropertyMemoryStoreHost = "l2.memorystore.host";
041: private final String PropertyMemoryStorePort = "l2.memorystore.port";
042: private final String memoryStoreHost;
043: private final int memoryStorePort;
044:
045: public MemoryStorePersistor() {
046: this (TCLogging.getLogger(MemoryStorePersistor.class));
047: }
048:
049: public MemoryStorePersistor(TCLogger logger) {
050: memoryStoreHost = TCPropertiesImpl.getProperties().getProperty(
051: PropertyMemoryStoreHost);
052: memoryStorePort = TCPropertiesImpl.getProperties().getInt(
053: PropertyMemoryStorePort);
054:
055: this .persistenceTransactionProvider = new NullPersistenceTransactionProvider();
056: this .clientStatePersistor = new InMemoryClientStatePersistor();
057: this .stringIndex = new StringIndexImpl(
058: new NullStringIndexPersistor());
059: this .clazzPersistor = new InMemoryClassPersistor();
060: this .memoryStoreCollectionFactory = new MemoryStoreCollectionFactory();
061: MemoryDataStoreClient mapsDB = new MemoryDataStoreClient(
062: MAP_DB_NAME, memoryStoreHost, memoryStorePort);
063: this .memoryStoreCollectionsPersistor = new MemoryStoreCollectionsPersistor(
064: logger, mapsDB, this .memoryStoreCollectionFactory);
065: this .memoryStoreCollectionFactory.setMemoryDataStore(mapsDB);
066: this .memoryStoreCollectionFactory
067: .setPersistor(this .memoryStoreCollectionsPersistor);
068:
069: MemoryDataStoreClient objectDB = new MemoryDataStoreClient(
070: OBJECT_DB_NAME, memoryStoreHost, memoryStorePort);
071: MemoryDataStoreClient rootDB = new MemoryDataStoreClient(
072: ROOT_DB_NAME, memoryStoreHost, memoryStorePort);
073: this .managedObjectPersistor = new MemoryStoreManagedObjectPersistor(
074: logger, objectDB, new InMemorySequenceProvider(),
075: rootDB, this .memoryStoreCollectionsPersistor);
076: MemoryDataStoreClient transactionStore = new MemoryDataStoreClient(
077: TRANSACTION_DB_NAME, memoryStoreHost, memoryStorePort);
078: this .transactionPerisistor = new MemoryStoreTransactionPersistor(
079: transactionStore);
080: this .mutableSequence = new InMemorySequenceProvider();
081: MemoryDataStoreClient clusterStateDB = new MemoryDataStoreClient(
082: CLUSTER_STATE_STORE, memoryStoreHost, memoryStorePort);
083: this .clusterStateStore = new MemoryStorePersistentMapStore(
084: clusterStateDB);
085: }
086:
087: public void close() {
088: return;
089: }
090:
091: public PersistenceTransactionProvider getPersistenceTransactionProvider() {
092: return this .persistenceTransactionProvider;
093: }
094:
095: public ClientStatePersistor getClientStatePersistor() {
096: return this .clientStatePersistor;
097: }
098:
099: public ManagedObjectPersistor getManagedObjectPersistor() {
100: return this .managedObjectPersistor;
101: }
102:
103: public TransactionPersistor getTransactionPersistor() {
104: return this .transactionPerisistor;
105: }
106:
107: public MutableSequence getGlobalTransactionIDSequence() {
108: return this .mutableSequence;
109: }
110:
111: public StringIndex getStringIndex() {
112: return stringIndex;
113: }
114:
115: public ClassPersistor getClassPersistor() {
116: return this .clazzPersistor;
117: }
118:
119: public PersistentCollectionFactory getPersistentCollectionFactory() {
120: return this .memoryStoreCollectionFactory;
121: }
122:
123: public PersistentMapStore getClusterStateStore() {
124: return clusterStateStore;
125: }
126:
127: }
|