RYA-161 Merge Tool with client; Closes #84 from isper3at/RYA-123_MergeTool
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/b61920ab Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/b61920ab Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/b61920ab Branch: refs/heads/master Commit: b61920abf96698a6df5b44f273f90283595b57e6 Parents: 2d6d818 Author: isper3at <[email protected]> Authored: Thu Sep 8 05:37:50 2016 -0400 Committer: pujav65 <[email protected]> Committed: Thu Dec 15 13:38:49 2016 -0500 ---------------------------------------------------------------------- .../rya/api/resolver/RyaTripleContext.java | 35 +- dao/accumulo.rya/pom.xml | 2 - .../rya/mongodb/MongoConnectorFactory.java | 22 +- .../org/apache/rya/mongodb/MongoDBRyaDAO.java | 6 +- .../dao/SimpleMongoDBStorageStrategy.java | 1 - .../rya/mongodb/MongoDBQueryEngineTest.java | 45 +-- extras/rya.export/export.accumulo/pom.xml | 67 +--- .../accumulo/AccumuloRyaStatementStore.java | 73 ++-- .../export/accumulo/common/InstanceType.java | 62 ---- .../accumulo/conf/AccumuloExportConstants.java | 86 +---- .../AccumuloParentMetadataRepository.java | 13 +- ...imestampPolicyAccumuloRyaStatementStore.java | 64 ++++ .../accumulo/util/AccumuloInstanceDriver.java | 23 +- .../export/accumulo/util/AccumuloRyaUtils.java | 30 +- .../api/conf/AccumuloConfigurationAdapter.java | 101 ++++-- .../api/conf/AccumuloMergeConfiguration.java | 26 +- .../src/main/xsd/AccumuloMergeConfiguration.xsd | 30 +- .../accumulo/AccumuloRyaStatementStoreTest.java | 71 +++- .../apache/rya/export/accumulo/TestUtils.java | 5 +- .../driver/AccumuloDualInstanceDriver.java | 15 +- ...muloParentMetadataRepositoryAdapterTest.java | 28 +- .../conf/AccumuloConfigurationAdapterTest.java | 82 +++-- extras/rya.export/export.api/pom.xml | 16 +- .../java/org/apache/rya/export/api/Merger.java | 2 +- .../apache/rya/export/api/StatementMerger.java | 4 +- .../export/api/conf/ConfigurationAdapter.java | 39 ++- .../rya/export/api/conf/MergeConfiguration.java | 86 ++--- .../api/conf/MergeConfigurationDecorator.java | 151 ++++++++ .../api/conf/MergeConfigurationException.java | 9 + .../TimestampPolicyConfigurationAdapter.java | 46 +++ .../TimestampPolicyMergeConfiguration.java | 80 +++++ .../policy/TimestampPolicyStatementStore.java | 53 +++ .../api/metadata/MergeParentMetadata.java | 137 ++++++++ .../ParentMetadataDoesNotExistException.java | 44 +++ .../api/metadata/ParentMetadataException.java | 44 +++ .../metadata/ParentMetadataExistsException.java | 44 +++ .../api/metadata/ParentMetadataRepository.java | 43 +++ .../export/api/parent/MergeParentMetadata.java | 137 -------- .../ParentMetadataDoesNotExistException.java | 35 -- .../api/parent/ParentMetadataException.java | 35 -- .../parent/ParentMetadataExistsException.java | 35 -- .../api/parent/ParentMetadataRepository.java | 43 --- .../export/api/store/AddStatementException.java | 2 +- .../api/store/ContainsStatementException.java | 2 +- .../api/store/FetchStatementException.java | 2 +- .../api/store/RemoveStatementException.java | 2 +- .../rya/export/api/store/RyaStatementStore.java | 18 +- .../api/store/RyaStatementStoreDecorator.java | 67 ---- .../api/store/RyaStatementStorePolicy.java | 80 +++++ .../api/store/UpdateStatementException.java | 3 +- .../src/main/xsd/MergeConfiguration.xsd | 117 ++++--- .../xsd/TimestampMergePolicyConfiguration.xsd | 37 ++ extras/rya.export/export.client/conf/config.xml | 36 ++ extras/rya.export/export.client/pom.xml | 123 +++++++ .../rya/export/client/MergeDriverClient.java | 138 ++++++++ .../client/conf/DateTimePickerDialog.java | 172 +++++++++ .../client/conf/MergeConfigHadoopAdapter.java | 36 ++ .../client/conf/MergeConfigurationCLI.java | 227 ++++++++++++ .../rya/export/client/conf/TimeUtils.java | 348 +++++++++++++++++++ .../export/client/merge/MemoryTimeMerger.java | 161 +++++++++ .../client/merge/StatementStoreFactory.java | 139 ++++++++ .../client/merge/VisibilityStatementMerger.java | 62 ++++ extras/rya.export/export.integration/pom.xml | 13 +- .../org/apache/rya/indexing/export/ITBase.java | 289 +++++++++++++++ .../rya/indexing/export/StoreToStoreIT.java | 257 ++++++++++++++ extras/rya.export/export.mongo/pom.xml | 56 +-- .../export/mongo/MongoRyaStatementStore.java | 44 ++- .../mongo/MongoRyaStatementStoreDecorator.java | 46 --- .../parent/MongoParentMetadataRepository.java | 16 +- .../parent/ParentMetadataRepositoryAdapter.java | 3 +- .../TimestampPolicyMongoRyaStatementStore.java | 78 +++++ .../mongo/time/TimeMongoRyaStatementStore.java | 101 ------ .../ParentMetadataRepositoryAdapterTest.java | 2 +- extras/rya.export/pom.xml | 33 +- .../apache/rya/indexing/GeoRyaSailFactory.java | 19 +- pom.xml | 1 - 76 files changed, 3516 insertions(+), 1184 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java ---------------------------------------------------------------------- diff --git a/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java b/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java index 37d19b1..a8c6e7b 100644 --- a/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java +++ b/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java @@ -8,9 +8,9 @@ package org.apache.rya.api.resolver; * 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 @@ -54,9 +54,9 @@ public class RyaTripleContext { public Log logger = LogFactory.getLog(RyaTripleContext.class); private TripleRowResolver tripleResolver; - private List<TriplePatternStrategy> triplePatternStrategyList = new ArrayList<TriplePatternStrategy>(); + private final List<TriplePatternStrategy> triplePatternStrategyList = new ArrayList<TriplePatternStrategy>(); - private RyaTripleContext(boolean addPrefixHash) { + public RyaTripleContext(final boolean addPrefixHash) { addDefaultTriplePatternStrategies(addPrefixHash); if (addPrefixHash){ tripleResolver = new WholeRowHashedTripleResolver(); @@ -73,23 +73,23 @@ public class RyaTripleContext { public static final RyaTripleContext HASHED_INSTANCE = new RyaTripleContext(true); } - public synchronized static RyaTripleContext getInstance(RdfCloudTripleStoreConfiguration conf) { + public synchronized static RyaTripleContext getInstance(final RdfCloudTripleStoreConfiguration conf) { if (conf.isPrefixRowsWithHash()){ return RyaTripleContextHolder.HASHED_INSTANCE; } return RyaTripleContextHolder.INSTANCE; } - - public Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serializeTriple(RyaStatement statement) throws TripleRowResolverException { + + public Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serializeTriple(final RyaStatement statement) throws TripleRowResolverException { return getTripleResolver().serialize(statement); } - public RyaStatement deserializeTriple(RdfCloudTripleStoreConstants.TABLE_LAYOUT table_layout, TripleRow tripleRow) throws TripleRowResolverException { + public RyaStatement deserializeTriple(final RdfCloudTripleStoreConstants.TABLE_LAYOUT table_layout, final TripleRow tripleRow) throws TripleRowResolverException { return getTripleResolver().deserialize(table_layout, tripleRow); } - protected void addDefaultTriplePatternStrategies(boolean addPrefixHash) { + protected void addDefaultTriplePatternStrategies(final boolean addPrefixHash) { if (addPrefixHash){ triplePatternStrategyList.add(new HashedSpoWholeRowTriplePatternStrategy()); triplePatternStrategyList.add(new HashedPoWholeRowTriplePatternStrategy()); @@ -102,32 +102,33 @@ public class RyaTripleContext { } //retrieve triple pattern strategy - public TriplePatternStrategy retrieveStrategy(RyaURI subject, RyaURI predicate, RyaType object, RyaURI context) { - for (TriplePatternStrategy strategy : triplePatternStrategyList) { - if (strategy.handles(subject, predicate, object, context)) + public TriplePatternStrategy retrieveStrategy(final RyaURI subject, final RyaURI predicate, final RyaType object, final RyaURI context) { + for (final TriplePatternStrategy strategy : triplePatternStrategyList) { + if (strategy.handles(subject, predicate, object, context)) { return strategy; + } } return null; } - public TriplePatternStrategy retrieveStrategy(RyaStatement stmt) { + public TriplePatternStrategy retrieveStrategy(final RyaStatement stmt) { return retrieveStrategy(stmt.getSubject(), stmt.getPredicate(), stmt.getObject(), stmt.getContext()); } - public TriplePatternStrategy retrieveStrategy(TABLE_LAYOUT layout) { - for(TriplePatternStrategy strategy : triplePatternStrategyList) { + public TriplePatternStrategy retrieveStrategy(final TABLE_LAYOUT layout) { + for(final TriplePatternStrategy strategy : triplePatternStrategyList) { if (strategy.getLayout().equals(layout)) { return strategy; } } return null; } - + public TripleRowResolver getTripleResolver() { return tripleResolver; } - public void setTripleResolver(TripleRowResolver tripleResolver) { + public void setTripleResolver(final TripleRowResolver tripleResolver) { this.tripleResolver = tripleResolver; } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/accumulo.rya/pom.xml ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/pom.xml b/dao/accumulo.rya/pom.xml index ddb6458..6248475 100644 --- a/dao/accumulo.rya/pom.xml +++ b/dao/accumulo.rya/pom.xml @@ -71,13 +71,11 @@ under the License. <artifactId>mrunit</artifactId> <classifier>hadoop2</classifier> <version>1.1.0</version> - <scope>test</scope> </dependency> <dependency> <groupId>org.apache.accumulo</groupId> <artifactId>accumulo-minicluster</artifactId> <version>${accumulo.version}</version> - <scope>test</scope> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java ---------------------------------------------------------------------- diff --git a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java index c240675..3d70219 100644 --- a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java +++ b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java @@ -6,9 +6,9 @@ * 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 @@ -66,7 +66,7 @@ public class MongoConnectorFactory { } /** - * Create a MongoDB client object and assign it to this class's static mongoClient + * Create a MongoDB client object and assign it to this class's static mongoClient * @param conf configuration containing connection parameters * @throws ConfigurationRuntimeException - Thrown if the configured server, port, user, or others are missing. * @throws MongoException if can't connect despite conf parameters are given @@ -76,7 +76,7 @@ public class MongoConnectorFactory { // Connect to a running Mongo server final String host = requireNonNull(conf.get(MongoDBRdfConfiguration.MONGO_INSTANCE), MSG_INTRO+"host name is required"); final int port = requireNonNullInt(conf.get(MongoDBRdfConfiguration.MONGO_INSTANCE_PORT), MSG_INTRO+"Port number is required."); - ServerAddress server = new ServerAddress(host, port); + final ServerAddress server = new ServerAddress(host, port); // check for authentication credentials if (conf.get(MongoDBRdfConfiguration.MONGO_USER) != null) { final String username = conf.get(MongoDBRdfConfiguration.MONGO_USER); @@ -96,27 +96,29 @@ public class MongoConnectorFactory { /** * Throw exception for un-configured required values. - * + * * @param required String to check * @param message throw configuration exception with this description * @return unaltered required string * @throws ConfigurationRuntimeException if required is null */ - private static String requireNonNull(String required, String message) throws ConfigurationRuntimeException { - if (required == null) + private static String requireNonNull(final String required, final String message) throws ConfigurationRuntimeException { + if (required == null) { throw new ConfigurationRuntimeException(message); + } return required; } /* * Same as above, check that it is a integer and return the parsed integer. */ - private static int requireNonNullInt(String required, String message) throws ConfigurationRuntimeException { - if (required == null) + private static int requireNonNullInt(final String required, final String message) throws ConfigurationRuntimeException { + if (required == null) { throw new ConfigurationRuntimeException(message); + } try { return Integer.parseInt(required); - } catch (NumberFormatException e) { + } catch (final NumberFormatException e) { throw new ConfigurationRuntimeException(message); } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java ---------------------------------------------------------------------- diff --git a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java index fe78f3a..07051a9 100644 --- a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java +++ b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java @@ -57,7 +57,7 @@ public final class MongoDBRyaDAO implements RyaDAO<MongoDBRdfConfiguration>{ private static final Logger log = Logger.getLogger(MongoDBRyaDAO.class); private MongoDBRdfConfiguration conf; - private MongoClient mongoClient; + private final MongoClient mongoClient; private DB db; private DBCollection coll; private MongoDBQueryEngine queryEngine; @@ -150,11 +150,11 @@ public final class MongoDBRyaDAO implements RyaDAO<MongoDBRdfConfiguration>{ for(final RyaSecondaryIndexer index: secondaryIndexers) { index.storeStatement(statement); } - } catch (IOException e) { + } catch (final IOException e) { log.error("Unable to add: " + statement.toString()); throw new RyaDAOException(e); } - catch (DuplicateKeyException e){ + catch (final DuplicateKeyException e){ log.error("Attempting to load duplicate triple: " + statement.toString()); } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java ---------------------------------------------------------------------- diff --git a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java index d51a2fe..258d37f 100644 --- a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java +++ b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java @@ -90,7 +90,6 @@ public class SimpleMongoDBStorageStrategy implements MongoDBStorageStrategy<RyaS if (context != null){ query.append(CONTEXT, context.getData()); } - return query; } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java ---------------------------------------------------------------------- diff --git a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java index 1670b74..98fdace 100644 --- a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java +++ b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java @@ -8,9 +8,9 @@ package org.apache.rya.mongodb; * 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 @@ -51,34 +51,37 @@ public class MongoDBQueryEngineTest extends MongoRyaTestBase { @Before public void setUp() throws Exception { // Set up Mongo/Rya - Configuration conf = new Configuration(); + final Configuration conf = new Configuration(); conf.set(MongoDBRdfConfiguration.MONGO_DB_NAME, "test"); conf.set(MongoDBRdfConfiguration.MONGO_COLLECTION_PREFIX, "rya_"); conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, "rya_"); configuration = new MongoDBRdfConfiguration(conf); - int port = mongoClient.getServerAddressList().get(0).getPort(); + final int port = mongoClient.getServerAddressList().get(0).getPort(); configuration.set(MongoDBRdfConfiguration.MONGO_INSTANCE_PORT, Integer.toString(port)); engine = new MongoDBQueryEngine(configuration, mongoClient); // Add Data - MongoDBRyaDAO dao = new MongoDBRyaDAO(configuration, mongoClient); + final MongoDBRyaDAO dao = new MongoDBRyaDAO(configuration, mongoClient); dao.add(getStatement("u:a", "u:tt", "u:b")); dao.add(getStatement("u:a", "u:tt", "u:c")); } - private RyaStatement getStatement(String s, String p, String o) { - RyaStatementBuilder builder = new RyaStatementBuilder(); - if (s != null) + private RyaStatement getStatement(final String s, final String p, final String o) { + final RyaStatementBuilder builder = new RyaStatementBuilder(); + if (s != null) { builder.setSubject(new RyaURI(s)); - if (p != null) + } + if (p != null) { builder.setPredicate(new RyaURI(p)); - if (o != null) + } + if (o != null) { builder.setObject(new RyaURI(o)); + } return builder.build(); } - public int size(CloseableIteration<?, ?> iter) throws Exception { + public int size(final CloseableIteration<?, ?> iter) throws Exception { int i = 0; while (iter.hasNext()) { i++; @@ -89,29 +92,29 @@ public class MongoDBQueryEngineTest extends MongoRyaTestBase { @Test public void statementQuery() throws Exception { - RyaStatement s = getStatement("u:a", null, null); + final RyaStatement s = getStatement("u:a", null, null); Assert.assertEquals(2, size(engine.query(s, configuration))); } @SuppressWarnings("unchecked") @Test public void bindingSetsQuery() throws Exception { - RyaStatement s = getStatement("u:a", null, null); - - MapBindingSet bs1 = new MapBindingSet(); + final RyaStatement s = getStatement("u:a", null, null); + + final MapBindingSet bs1 = new MapBindingSet(); bs1.addBinding("foo", new URIImpl("u:x")); - Map.Entry<RyaStatement, BindingSet> e1 = new RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs1); - Collection<Entry<RyaStatement, BindingSet>> stmts1 = Lists.newArrayList(e1); + final Map.Entry<RyaStatement, BindingSet> e1 = new RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs1); + final Collection<Entry<RyaStatement, BindingSet>> stmts1 = Lists.newArrayList(e1); Assert.assertEquals(2, size(engine.queryWithBindingSet(stmts1, configuration))); - - MapBindingSet bs2 = new MapBindingSet(); + + final MapBindingSet bs2 = new MapBindingSet(); bs2.addBinding("foo", new URIImpl("u:y")); - Map.Entry<RyaStatement, BindingSet> e2 = new RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs2); + final Map.Entry<RyaStatement, BindingSet> e2 = new RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs2); - Collection<Entry<RyaStatement, BindingSet>> stmts2 = Lists.newArrayList(e1, e2); + final Collection<Entry<RyaStatement, BindingSet>> stmts2 = Lists.newArrayList(e1, e2); Assert.assertEquals(4, size(engine.queryWithBindingSet(stmts2, configuration))); } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/pom.xml ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/pom.xml b/extras/rya.export/export.accumulo/pom.xml index 23598b0..7489c64 100644 --- a/extras/rya.export/export.accumulo/pom.xml +++ b/extras/rya.export/export.accumulo/pom.xml @@ -25,7 +25,7 @@ under the License. <parent> <groupId>org.apache.rya</groupId> <artifactId>rya.export.parent</artifactId> - <version>3.2.10-SNAPSHOT</version> + <version>3.2.11-incubating-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -39,7 +39,7 @@ under the License. <dependency> <groupId>org.apache.rya</groupId> <artifactId>rya.export.api</artifactId> - <version>3.2.10-SNAPSHOT</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.rya</groupId> @@ -51,23 +51,18 @@ under the License. <artifactId>rya.mapreduce</artifactId> </dependency> - <!-- Log4j 2 bridge, api, and core. --> + <!-- Testing dependencies. --> <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-1.2-api</artifactId> - <version>2.5</version> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> </dependency> <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <version>2.5</version> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + <scope>test</scope> </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <version>2.5</version> - </dependency> - + <!-- Accumulo --> <dependency> <groupId>org.apache.accumulo</groupId> @@ -90,51 +85,9 @@ under the License. <artifactId>libthrift</artifactId> <version>0.9.1</version> </dependency> - - <!-- Testing dependencies. --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> - </dependency> </dependencies> - <build> <plugins> - <!-- Use the pre-build 'jar-with-dependencies' assembly to package the dependent class files into the final jar. - This creates a jar file that can be deployed to Fluo without having to include any dependent jars. --> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <archive> - <manifest> - <addClasspath>true</addClasspath> - <classpathLayoutType>custom</classpathLayoutType> - <customClasspathLayout>WEB-INF/lib/$${artifact.groupIdPath}/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}</customClasspathLayout> - - <mainClass>org.apache.rya.indexing.pcj.fluo.PcjAdminClient</mainClass> - </manifest> - </archive> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - </configuration> - <executions> - <execution> - <id>make-assembly</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java index 90c30ee..2376c20 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.HashSet; import java.util.Iterator; import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; import org.apache.accumulo.core.client.IteratorSetting; @@ -31,10 +32,18 @@ import org.apache.accumulo.core.client.Scanner; import org.apache.accumulo.core.data.Key; import org.apache.accumulo.core.data.Value; import org.apache.log4j.Logger; -import org.apache.rya.export.accumulo.common.InstanceType; -import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver; +import org.apache.rya.accumulo.AccumuloRyaDAO; +import org.apache.rya.api.RdfCloudTripleStoreConstants; +import org.apache.rya.api.domain.RyaStatement; +import org.apache.rya.api.persist.RyaDAOException; +import org.apache.rya.api.resolver.RyaTripleContext; +import org.apache.rya.api.resolver.triple.TripleRowResolverException; +import org.apache.rya.export.InstanceType; +import org.apache.rya.export.accumulo.parent.AccumuloParentMetadataRepository; import org.apache.rya.export.accumulo.util.AccumuloRyaUtils; import org.apache.rya.export.api.MergerException; +import org.apache.rya.export.api.metadata.MergeParentMetadata; +import org.apache.rya.export.api.metadata.ParentMetadataExistsException; import org.apache.rya.export.api.store.AddStatementException; import org.apache.rya.export.api.store.ContainsStatementException; import org.apache.rya.export.api.store.FetchStatementException; @@ -46,12 +55,6 @@ import com.google.common.base.Function; import com.google.common.collect.Iterators; import info.aduna.iteration.CloseableIteration; -import mvm.rya.accumulo.AccumuloRyaDAO; -import mvm.rya.api.RdfCloudTripleStoreConstants; -import mvm.rya.api.domain.RyaStatement; -import mvm.rya.api.persist.RyaDAOException; -import mvm.rya.api.resolver.RyaTripleContext; -import mvm.rya.api.resolver.triple.TripleRowResolverException; /** * Allows specific CRUD operations an Accumulo {@link RyaStatement} storage @@ -72,7 +75,7 @@ public class AccumuloRyaStatementStore implements RyaStatementStore { private final AccumuloRyaDAO accumuloRyaDao; private final String tablePrefix; private final Set<IteratorSetting> iteratorSettings = new HashSet<>(); - private final AccumuloInstanceDriver accumuloInstanceDriver; + private final AccumuloParentMetadataRepository metadataRepo; /** * Creates a new instance of {@link AccumuloRyaStatementStore}. @@ -86,20 +89,13 @@ public class AccumuloRyaStatementStore implements RyaStatementStore { * @param zooKeepers the comma-separated list of zoo keeper host names. * @throws MergerException */ - public AccumuloRyaStatementStore(final String instanceName, final String username, final String password, final InstanceType instanceType, final String tablePrefix, final String auths, final String zooKeepers) throws MergerException { + public AccumuloRyaStatementStore(final AccumuloRyaDAO dao, final String tablePrefix, final String ryaInstance) { this.tablePrefix = tablePrefix; if (tablePrefix != null) { RdfCloudTripleStoreConstants.prefixTables(tablePrefix); } - - final String driverName = instanceName + AccumuloRyaStatementStore.class.getSimpleName(); - accumuloInstanceDriver = new AccumuloInstanceDriver(driverName, instanceType, true, false, true, username, password, instanceName, tablePrefix, auths, zooKeepers); - try { - accumuloInstanceDriver.setUp(); - } catch (final Exception e) { - throw new MergerException(e); - } - accumuloRyaDao = accumuloInstanceDriver.getDao(); + accumuloRyaDao = dao; + metadataRepo = new AccumuloParentMetadataRepository(dao); } @Override @@ -142,7 +138,14 @@ public class AccumuloRyaStatementStore implements RyaStatementStore { public void addStatement(final RyaStatement statement) throws AddStatementException { try { accumuloRyaDao.add(statement); - } catch (final RyaDAOException e) { + accumuloRyaDao.flush(); + //This is a hack since a statement re-added with the same timestamp won't reappear since its been marked for deletion. + //RYA-197 is the ticket for fixing this hack. + if(!containsStatement(statement)) { + statement.setTimestamp(statement.getTimestamp() + 1L); + accumuloRyaDao.add(statement); + } + } catch (final RyaDAOException | ContainsStatementException e) { throw new AddStatementException("Unable to add the Rya Statement", e); } } @@ -176,6 +179,22 @@ public class AccumuloRyaStatementStore implements RyaStatementStore { } } + @Override + public Optional<MergeParentMetadata> getParentMetadata() { + MergeParentMetadata metadata = null; + try { + metadata = metadataRepo.get(); + } finally { + return Optional.ofNullable(metadata); + } + } + + @Override + public void setParentMetadata(final MergeParentMetadata metadata) throws ParentMetadataExistsException { + metadataRepo.set(metadata); + } + + public RyaStatement findStatement(final RyaStatement ryaStatement) throws RyaDAOException { RyaStatement resultRyaStatement = null; CloseableIteration<RyaStatement, RyaDAOException> iter = null; @@ -194,20 +213,6 @@ public class AccumuloRyaStatementStore implements RyaStatementStore { } /** - * @return the {@link AccumuloRyaDAO}. - */ - public AccumuloRyaDAO getRyaDAO() { - return accumuloRyaDao; - } - - /** - * @return the {@link AccumuloInstanceDriver}. - */ - public AccumuloInstanceDriver getAccumuloInstanceDriver() { - return accumuloInstanceDriver; - } - - /** * Adds an iterator setting to the statement store for it to use when it * fetches statements. * @param iteratorSetting the {@link IteratorSetting} to add. http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java deleted file mode 100644 index 41543d6..0000000 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java +++ /dev/null @@ -1,62 +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.rya.export.accumulo.common; - -import org.apache.accumulo.core.client.mock.MockInstance; -import org.apache.accumulo.minicluster.MiniAccumuloCluster; - -/** - * The type of Accumulo instance. - */ -public enum InstanceType { - /** - * An Accumulo instance that runs using a regular Accumulo distribution. - */ - DISTRIBUTION, - /** - * An Accumulo instance that runs using a {@link MiniAccumuloCluster}. - */ - MINI, - /** - * An Accumulo instance that runs using a {@link MockInstance}. - */ - MOCK; - - /** - * Finds the instance type by name. - * @param name the name to find. - * @return the {@link InstanceType} or {@code null} if none could be found. - */ - public static InstanceType fromName(String name) { - for (InstanceType instanceType : InstanceType.values()) { - if (instanceType.toString().equals(name)) { - return instanceType; - } - } - return null; - } - - /** - * @return {@code true} if the Accumulo instance is a {@link MockInstance}. - * {@code false} otherwise. - */ - public boolean isMock() { - return this == MOCK; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java index ed0aa62..51dec9b 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java @@ -18,25 +18,20 @@ */ package org.apache.rya.export.accumulo.conf; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map.Entry; -import org.apache.accumulo.core.client.IteratorSetting; -import org.apache.accumulo.core.iterators.user.TimestampFilter; import org.apache.hadoop.conf.Configuration; import org.apache.log4j.Logger; -import org.apache.rya.export.accumulo.common.InstanceType; +import org.apache.rya.accumulo.mr.MRUtils; +import org.apache.rya.api.RdfCloudTripleStoreConfiguration; +import org.apache.rya.indexing.accumulo.ConfigUtils; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import mvm.rya.accumulo.mr.MRUtils; -import mvm.rya.api.RdfCloudTripleStoreConfiguration; -import mvm.rya.indexing.accumulo.ConfigUtils; - /** * Constant used for Accumulo merger exports. */ @@ -53,12 +48,6 @@ public class AccumuloExportConstants { */ public static final String ACCUMULO_INSTANCE_TYPE_PROP = "ac.instance.type"; - /** - * A value used for the {@link #START_TIME_PROP} property to indicate that a dialog - * should be displayed to select the time. - */ - public static final String USE_START_TIME_DIALOG = "dialog"; - public static final SimpleDateFormat START_TIME_FORMATTER = new SimpleDateFormat("yyyyMMddHHmmssSSSz"); /** @@ -115,23 +104,6 @@ public class AccumuloExportConstants { } /** - * Creates a formatted string for the start time based on the specified date and whether the dialog is to be displayed. - * @param startDate the start {@link Date} to format. - * @param isStartTimeDialogEnabled {@code true} to display the time dialog instead of using the date. {@code false} - * to use the provided {@code startDate}. - * @return the formatted start time string or {@code "dialog"}. - */ - public static String getStartTimeString(final Date startDate, final boolean isStartTimeDialogEnabled) { - String startTimeString; - if (isStartTimeDialogEnabled) { - startTimeString = USE_START_TIME_DIALOG; // set start date from dialog box - } else { - startTimeString = convertDateToStartTimeString(startDate); - } - return startTimeString; - } - - /** * Converts the specified date into a string to use as the start time for the timestamp filter. * @param date the start {@link Date} of the filter that will be formatted as a string. * @return the formatted start time string. @@ -140,56 +112,4 @@ public class AccumuloExportConstants { final String startTimeString = START_TIME_FORMATTER.format(date); return startTimeString; } - - /** - * Converts the specified string into a date to use as the start time for the timestamp filter. - * @param startTimeString the formatted time string. - * @return the start {@link Date}. - */ - public static Date convertStartTimeStringToDate(final String startTimeString) { - Date date; - try { - date = START_TIME_FORMATTER.parse(startTimeString); - } catch (final ParseException e) { - log.error("Could not parse date", e); - return null; - } - return date; - } - - /** - * Creates an {@link IteratorSetting} with a time stamp filter that starts with the specified data. - * @param startTimeString the start time of the filter. - * @return the {@link IteratorSetting}. - */ - public static IteratorSetting getStartTimeSetting(final String startTimeString) { - Date date = null; - try { - date = START_TIME_FORMATTER.parse(startTimeString); - } catch (final ParseException e) { - throw new IllegalArgumentException("Couldn't parse " + startTimeString, e); - } - return getStartTimeSetting(date); - } - - /** - * Creates an {@link IteratorSetting} with a time stamp filter that starts with the specified data. - * @param date the start {@link Date} of the filter. - * @return the {@link IteratorSetting}. - */ - public static IteratorSetting getStartTimeSetting(final Date date) { - return getStartTimeSetting(date.getTime()); - } - - /** - * Creates an {@link IteratorSetting} with a time stamp filter that starts with the specified data. - * @param time the start time of the filter. - * @return the {@link IteratorSetting}. - */ - public static IteratorSetting getStartTimeSetting(final long time) { - final IteratorSetting setting = new IteratorSetting(1, "startTimeIterator", TimestampFilter.class); - TimestampFilter.setStart(setting, time, true); - TimestampFilter.setEnd(setting, Long.MAX_VALUE, true); - return setting; - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java index fbf8374..3241fbb 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java @@ -46,14 +46,13 @@ import org.apache.accumulo.core.security.Authorizations; import org.apache.accumulo.core.security.TablePermission; import org.apache.hadoop.io.Text; import org.apache.log4j.Logger; +import org.apache.rya.accumulo.AccumuloRyaDAO; +import org.apache.rya.accumulo.mr.MRUtils; import org.apache.rya.export.api.MergerException; -import org.apache.rya.export.api.parent.MergeParentMetadata; -import org.apache.rya.export.api.parent.ParentMetadataDoesNotExistException; -import org.apache.rya.export.api.parent.ParentMetadataExistsException; -import org.apache.rya.export.api.parent.ParentMetadataRepository; - -import mvm.rya.accumulo.AccumuloRyaDAO; -import mvm.rya.accumulo.mr.MRUtils; +import org.apache.rya.export.api.metadata.MergeParentMetadata; +import org.apache.rya.export.api.metadata.ParentMetadataDoesNotExistException; +import org.apache.rya.export.api.metadata.ParentMetadataExistsException; +import org.apache.rya.export.api.metadata.ParentMetadataRepository; /** * Accumulo repository for metadata pertaining to the parent database. This http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java new file mode 100644 index 0000000..ad27010 --- /dev/null +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java @@ -0,0 +1,64 @@ +/* + * 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.rya.export.accumulo.policy; + +import java.util.Date; +import java.util.Iterator; + +import org.apache.accumulo.core.client.IteratorSetting; +import org.apache.accumulo.core.iterators.user.TimestampFilter; +import org.apache.rya.api.domain.RyaStatement; +import org.apache.rya.export.accumulo.AccumuloRyaStatementStore; +import org.apache.rya.export.api.conf.policy.TimestampPolicyStatementStore; +import org.apache.rya.export.api.store.FetchStatementException; +import org.apache.rya.export.api.store.RyaStatementStore; + +/** + * A {@link RyaStatementStore} decorated to connect to an Accumulo database and + * filter statements based on a timestamp. + */ +public class TimestampPolicyAccumuloRyaStatementStore extends TimestampPolicyStatementStore { + + /** + * Creates a new {@link TimestampPolicyAccumuloRyaStatementStore} + * @param store + * @param timestamp + */ + public TimestampPolicyAccumuloRyaStatementStore(final AccumuloRyaStatementStore store, final Date timestamp) { + super(store, timestamp); + store.addIterator(getStartTimeSetting(timestamp)); + } + + /** + * Creates an {@link IteratorSetting} with a time stamp filter that starts with the specified data. + * @param time the start time of the filter. + * @return the {@link IteratorSetting}. + */ + private static IteratorSetting getStartTimeSetting(final Date time) { + final IteratorSetting setting = new IteratorSetting(1, "startTimeIterator", TimestampFilter.class); + TimestampFilter.setStart(setting, time.getTime(), true); + TimestampFilter.setEnd(setting, Long.MAX_VALUE, true); + return setting; + } + + @Override + public Iterator<RyaStatement> fetchStatements() throws FetchStatementException { + return store.fetchStatements(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java index 4c086d8..f8d9484 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java @@ -43,19 +43,18 @@ import org.apache.accumulo.minicluster.MiniAccumuloCluster; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.SystemUtils; import org.apache.log4j.Logger; -import org.apache.rya.export.accumulo.common.InstanceType; +import org.apache.rya.accumulo.AccumuloRdfConfiguration; +import org.apache.rya.accumulo.AccumuloRyaDAO; +import org.apache.rya.accumulo.mr.MRUtils; +import org.apache.rya.api.RdfCloudTripleStoreConstants; +import org.apache.rya.api.persist.RyaDAOException; +import org.apache.rya.export.InstanceType; import org.apache.rya.export.accumulo.conf.AccumuloExportConstants; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.io.Files; -import mvm.rya.accumulo.AccumuloRdfConfiguration; -import mvm.rya.accumulo.AccumuloRyaDAO; -import mvm.rya.accumulo.mr.MRUtils; -import mvm.rya.api.RdfCloudTripleStoreConstants; -import mvm.rya.api.persist.RyaDAOException; - /** * Handles running a single {@link MiniAccumuloCluster} or a single {@link MockInstance} for an instance. */ @@ -136,7 +135,7 @@ public class AccumuloInstanceDriver { public AccumuloInstanceDriver(final String driverName, final InstanceType instanceType, final boolean shouldCreateIndices, final boolean isReadOnly, final boolean isParent, final String user, final String password, final String instanceName, final String tablePrefix, final String auth, final String zooKeepers) { this.driverName = Preconditions.checkNotNull(driverName); this.instanceType = instanceType; - this.isMock = instanceType.isMock(); + isMock = instanceType == InstanceType.MOCK; this.shouldCreateIndices = shouldCreateIndices; this.isReadOnly = isReadOnly; this.user = user; @@ -156,7 +155,9 @@ public class AccumuloInstanceDriver { */ public void setUp() throws Exception { setUpInstance(); - setUpTables(); + if((isMock || instanceType == InstanceType.MINI) && isParent) { + setUpTables(); + } setUpDao(); setUpConfig(); } @@ -282,10 +283,12 @@ public class AccumuloInstanceDriver { addAuths(auth); final TablePermission tablePermission = isReadOnly ? TablePermission.READ : TablePermission.WRITE; for (final String tableSuffix : TABLE_NAME_SUFFIXES) { + log.info("Giving user: " + user + " " + tablePermission.toString() + " permissions on table " + tablePrefix + tableSuffix); secOps.grantTablePermission(user, tablePrefix + tableSuffix, tablePermission); } if (shouldCreateIndices) { for (final String index : indices) { + log.info("Giving user: " + user + " " + tablePermission.toString() + " permissions on table " + index); secOps.grantTablePermission(user, index, tablePermission); } } @@ -394,7 +397,7 @@ public class AccumuloInstanceDriver { */ public void tearDown() throws Exception { try { - //tearDownTables(); + tearDownTables(); tearDownDao(); tearDownInstance(); } finally { http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java index c425227..115074c 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java @@ -41,30 +41,30 @@ import org.apache.accumulo.core.client.mock.MockInstance; import org.apache.accumulo.core.client.security.tokens.PasswordToken; import org.apache.accumulo.core.data.Key; import org.apache.accumulo.core.data.Value; +import org.apache.accumulo.core.iterators.Filter; import org.apache.accumulo.core.iterators.user.RegExFilter; import org.apache.accumulo.core.security.Authorizations; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.log4j.Logger; +import org.apache.rya.accumulo.AccumuloRdfConfiguration; +import org.apache.rya.accumulo.AccumuloRyaDAO; +import org.apache.rya.accumulo.mr.MRUtils; +import org.apache.rya.api.RdfCloudTripleStoreConstants; +import org.apache.rya.api.RdfCloudTripleStoreConstants.TABLE_LAYOUT; +import org.apache.rya.api.domain.RyaStatement; +import org.apache.rya.api.domain.RyaURI; +import org.apache.rya.api.persist.RyaDAOException; +import org.apache.rya.api.resolver.RdfToRyaConversions; +import org.apache.rya.api.resolver.RyaTripleContext; +import org.apache.rya.api.resolver.triple.TripleRow; +import org.apache.rya.api.resolver.triple.TripleRowResolverException; +import org.apache.rya.indexing.accumulo.ConfigUtils; import org.openrdf.model.ValueFactory; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableSet; -import mvm.rya.accumulo.AccumuloRdfConfiguration; -import mvm.rya.accumulo.AccumuloRyaDAO; -import mvm.rya.accumulo.mr.MRUtils; -import mvm.rya.api.RdfCloudTripleStoreConstants; -import mvm.rya.api.RdfCloudTripleStoreConstants.TABLE_LAYOUT; -import mvm.rya.api.domain.RyaStatement; -import mvm.rya.api.domain.RyaURI; -import mvm.rya.api.persist.RyaDAOException; -import mvm.rya.api.resolver.RdfToRyaConversions; -import mvm.rya.api.resolver.RyaTripleContext; -import mvm.rya.api.resolver.triple.TripleRow; -import mvm.rya.api.resolver.triple.TripleRowResolverException; -import mvm.rya.indexing.accumulo.ConfigUtils; - /** * Utility methods for an Accumulo Rya instance. */ @@ -153,7 +153,7 @@ public final class AccumuloRyaUtils { public static IteratorSetting getVersionRegExFilterSetting() { final IteratorSetting regex = new IteratorSetting(30, "version_regex", RegExFilter.class); RegExFilter.setRegexs(regex, "(.*)urn:(.*)#version[\u0000|\u0001](.*)", null, null, null, false); - RegExFilter.setNegate(regex, true); + Filter.setNegate(regex, true); return regex; } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java index 47e740d..63d0930 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java @@ -18,50 +18,81 @@ */ package org.apache.rya.export.api.conf; -import org.apache.rya.export.JAXBAccumuloMergeConfiguration; -import org.apache.rya.export.accumulo.common.InstanceType; +import org.apache.rya.export.AccumuloMergeToolConfiguration; +import org.apache.rya.export.DBType; +import org.apache.rya.export.InstanceType; +import org.apache.rya.export.MergeToolConfiguration; import org.apache.rya.export.api.conf.AccumuloMergeConfiguration.AccumuloBuilder; /** * Helper for creating the immutable application configuration that uses * Accumulo. */ -public class AccumuloConfigurationAdapter { +public class AccumuloConfigurationAdapter extends ConfigurationAdapter { /** - * @param jConfig - The JAXB generated configuration. + * @param genConfig - The JAXB generated configuration. * @return The {@link MergeConfiguration} used in the application * @throws MergeConfigurationException */ - public static AccumuloMergeConfiguration createConfig(final JAXBAccumuloMergeConfiguration jConfig) throws MergeConfigurationException { - final AccumuloBuilder configBuilder = (AccumuloBuilder) new AccumuloBuilder() - // Accumulo Properties - .setParentZookeepers(jConfig.getParentZookeepers()) - .setParentAuths(jConfig.getParentAuths()) - .setParentInstanceType(InstanceType.fromName(jConfig.getParentInstanceType())) - .setChildZookeepers(jConfig.getChildZookeepers()) - .setChildAuths(jConfig.getChildAuths()) - .setChildInstanceType(InstanceType.fromName(jConfig.getChildInstanceType())) - // Base Properties - .setParentHostname(jConfig.getParentHostname()) - .setParentUsername(jConfig.getParentUsername()) - .setParentPassword(jConfig.getParentPassword()) - .setParentRyaInstanceName(jConfig.getParentRyaInstanceName()) - .setParentDBType(jConfig.getParentDBType()) - .setParentPort(jConfig.getParentPort()) - .setParentTablePrefix(jConfig.getParentTablePrefix()) - .setParentTomcatUrl(jConfig.getParentTomcatUrl()) - .setChildHostname(jConfig.getChildHostname()) - .setChildUsername(jConfig.getChildUsername()) - .setChildPassword(jConfig.getChildPassword()) - .setChildRyaInstanceName(jConfig.getChildRyaInstanceName()) - .setChildDBType(jConfig.getChildDBType()) - .setChildPort(jConfig.getChildPort()) - .setChildTablePrefix(jConfig.getChildTablePrefix()) - .setChildTomcatUrl(jConfig.getChildTomcatUrl()) - .setMergePolicy(jConfig.getMergePolicy()) - .setUseNtpServer(jConfig.isUseNtpServer()) - .setNtpServerHost(jConfig.getNtpServerHost()) - .setToolStartTime(jConfig.getToolStartTime()); - return configBuilder.build(); + @Override + public MergeConfiguration createConfig(final MergeToolConfiguration genConfig) throws MergeConfigurationException { + final AccumuloMergeToolConfiguration aConfig = (AccumuloMergeToolConfiguration) genConfig; + final DBType parentType = aConfig.getParentDBType(); + final DBType childType = aConfig.getChildDBType(); + final MergeConfiguration.Builder configBuilder = super.getBuilder(aConfig); + final AccumuloBuilder builder = new AccumuloBuilder(configBuilder); + if(parentType == DBType.ACCUMULO) { + verifyParentInstanceType(aConfig); + builder.setParentZookeepers(aConfig.getParentZookeepers()) + .setParentAuths(aConfig.getParentAuths()) + .setParentInstanceType(aConfig.getParentInstanceType()); + } + + if(childType == DBType.ACCUMULO) { + verifyChildInstanceType(aConfig); + builder.setChildZookeepers(aConfig.getChildZookeepers()) + .setChildAuths(aConfig.getChildAuths()) + .setChildInstanceType(aConfig.getChildInstanceType()); + } + + return builder.build(); + } + + private void verifyParentInstanceType(final AccumuloMergeToolConfiguration aConfig) throws MergeConfigurationException { + final InstanceType type = aConfig.getParentInstanceType(); + switch(type) { + case DISTRIBUTION: + final String auths = aConfig.getParentAuths(); + if(auths == null) { + throw new MergeConfigurationException("Missing authorization level for parent accumulo."); + } + final String zookeepers = aConfig.getParentZookeepers(); + if(zookeepers == null) { + throw new MergeConfigurationException("Missing zookeeper location(s) for parent accumulo."); + } + break; + case MINI: + case MOCK: + break; + } + } + + private void verifyChildInstanceType(final AccumuloMergeToolConfiguration aConfig) throws MergeConfigurationException { + final InstanceType type = aConfig.getChildInstanceType(); + switch(type) { + case DISTRIBUTION: + final String auths = aConfig.getChildAuths(); + if(auths == null) { + throw new MergeConfigurationException("Missing authorization level for child accumulo."); + } + final String zookeepers = aConfig.getChildZookeepers(); + if(zookeepers == null) { + throw new MergeConfigurationException("Missing zookeeper location(s) for child accumulo."); + } + break; + case MINI: + case MOCK: + break; + } } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java index fbd5477..a35d5aa 100644 --- a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java +++ b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java @@ -18,17 +18,15 @@ */ package org.apache.rya.export.api.conf; -import static com.google.common.base.Preconditions.checkNotNull; - import org.apache.http.annotation.Immutable; -import org.apache.rya.export.accumulo.common.InstanceType; +import org.apache.rya.export.InstanceType; /** * Immutable configuration object to allow the MergeTool to connect to the parent and child * databases for data merging. */ @Immutable -public class AccumuloMergeConfiguration extends MergeConfiguration { +public class AccumuloMergeConfiguration extends MergeConfigurationDecorator { /** * Information needed to connect to the parent database */ @@ -46,15 +44,15 @@ public class AccumuloMergeConfiguration extends MergeConfiguration { /** * Constructs a {@link AccumuloMergeConfiguration}. All fields are required. */ - private AccumuloMergeConfiguration(final AccumuloBuilder builder) throws MergeConfigurationException { - super(checkNotNull(builder)); + private AccumuloMergeConfiguration(final AccumuloMergeConfiguration.AccumuloBuilder builder) throws MergeConfigurationException { + super(builder); try { - this.parentZookeepers = checkNotNull(builder.parentZookeepers); - this.parentAuths = checkNotNull(builder.parentAuths); - this.parentInstanceType = checkNotNull(builder.parentInstanceType); - this.childZookeepers = checkNotNull(builder.childZookeepers); - this.childAuths = checkNotNull(builder.childAuths); - this.childInstanceType = checkNotNull(builder.childInstanceType); + parentZookeepers = builder.parentZookeepers; + parentAuths = builder.parentAuths; + parentInstanceType = builder.parentInstanceType; + childZookeepers = builder.childZookeepers; + childAuths = builder.childAuths; + childInstanceType = builder.childInstanceType; } catch(final NullPointerException npe) { throw new MergeConfigurationException("The configuration was missing required field(s)", npe); } @@ -114,8 +112,8 @@ public class AccumuloMergeConfiguration extends MergeConfiguration { private String childAuths; private InstanceType childInstanceType; - public AccumuloBuilder() { - super(); + public AccumuloBuilder(final MergeConfiguration.Builder builder) { + super(builder); } /** http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd b/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd index 65d1ed5..e0cd5ce 100644 --- a/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd +++ b/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd @@ -26,21 +26,31 @@ under the License. <!-- Reference to External Module containing JAXBMergeConfiguration definition --> <xs:include schemaLocation="../../../../export.api/src/main/xsd/MergeConfiguration.xsd"/> - <xs:complexType name="JAXBAccumuloMergeConfiguration"> + <xs:complexType name="AccumuloMergeToolConfiguration"> <xs:complexContent> - <xs:extension base="mc:JAXBMergeConfiguration"> + <xs:extension base="mc:MergeToolConfiguration"> <xs:sequence> - <!-- Parent Properties --> - <xs:element name="parentZookeepers" type="xs:string"/> - <xs:element name="parentAuths" type="xs:string"/> - <xs:element name="parentInstanceType" type="xs:string"/> + <!-- Parent Properties zookeepers and auths are not required + if the instance type is not distribution--> + <xs:element name="parentZookeepers" type="xs:string" minOccurs="0"/> + <xs:element name="parentAuths" type="xs:string" minOccurs="0"/> + <xs:element name="parentInstanceType" type="mc:InstanceType"/> - <!-- Child Properties --> - <xs:element name="childZookeepers" type="xs:string"/> - <xs:element name="childAuths" type="xs:string"/> - <xs:element name="childInstanceType" type="xs:string"/> + <!-- Child Properties zookeepers and auths are not required + if the instance type is not distribution--> + <xs:element name="childZookeepers" type="xs:string" minOccurs="0"/> + <xs:element name="childAuths" type="xs:string" minOccurs="0"/> + <xs:element name="childInstanceType" type="mc:InstanceType"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> + + <xs:simpleType name="InstanceType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="mock"/> + <xs:enumeration value="mini"/> + <xs:enumeration value="distribution"/> + </xs:restriction> + </xs:simpleType> </schema> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java index 22df92a..7c2ff83 100644 --- a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java +++ b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java @@ -19,6 +19,7 @@ package org.apache.rya.export.accumulo; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -27,18 +28,20 @@ import java.util.Date; import java.util.Iterator; import org.apache.hadoop.conf.Configuration; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.apache.rya.api.domain.RyaStatement; +import org.apache.rya.export.InstanceType; import org.apache.rya.export.MergePolicy; -import org.apache.rya.export.accumulo.common.InstanceType; -import org.apache.rya.export.accumulo.conf.AccumuloExportConstants; import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver; import org.apache.rya.export.api.MergerException; import org.apache.rya.export.api.conf.AccumuloMergeConfiguration; import org.apache.rya.export.api.store.AddStatementException; import org.apache.rya.export.api.store.FetchStatementException; import org.apache.rya.export.api.store.RemoveStatementException; +import org.apache.rya.export.api.store.RyaStatementStore; import org.apache.rya.export.api.store.UpdateStatementException; +import org.apache.rya.indexing.accumulo.ConfigUtils; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -47,9 +50,6 @@ import org.junit.Test; import com.google.common.collect.ImmutableList; -import mvm.rya.api.domain.RyaStatement; -import mvm.rya.indexing.accumulo.ConfigUtils; - /** * Tests the methods of {@link AccumuloRyaStatementStore}. */ @@ -57,7 +57,7 @@ public class AccumuloRyaStatementStoreTest { private static final Logger log = LogManager.getLogger(AccumuloRyaStatementStoreTest.class); private static final InstanceType INSTANCE_TYPE = InstanceType.MOCK; - private static final boolean IS_MOCK = INSTANCE_TYPE.isMock(); + private static final boolean IS_MOCK = INSTANCE_TYPE == InstanceType.MOCK; private static final String USER_NAME = IS_MOCK ? "test_user" : AccumuloInstanceDriver.ROOT_USER_NAME; private static final String PASSWORD = "password"; private static final String INSTANCE_NAME = "test_instance"; @@ -115,6 +115,23 @@ public class AccumuloRyaStatementStoreTest { accumuloRyaStatementStore.fetchStatements(); } + @Test + public void testRemoveAddStatements() throws MergerException { + final AccumuloRyaStatementStore accumuloRyaStatementStore = createAccumuloRyaStatementStore(); + + for (final RyaStatement ryaStatement : RYA_STATEMENTS) { + accumuloRyaStatementStore.addStatement(ryaStatement); + } + final RyaStatement stmnt = RYA_STATEMENTS.get(0); + + assertTrue(accumuloRyaStatementStore.containsStatement(stmnt)); + accumuloRyaStatementStore.removeStatement(stmnt); + assertFalse(accumuloRyaStatementStore.containsStatement(stmnt)); + + accumuloRyaStatementStore.addStatement(stmnt); + assertTrue(accumuloRyaStatementStore.containsStatement(stmnt)); + } + @Test (expected = FetchStatementException.class) public void testFetchStatements_FetchWrongInstance() throws MergerException { final AccumuloRyaStatementStore accumuloRyaStatementStore = createAccumuloRyaStatementStore(); @@ -123,7 +140,7 @@ public class AccumuloRyaStatementStoreTest { accumuloRyaStatementStore.addStatement(ryaStatement); } - final Configuration config = accumuloRyaStatementStore.getRyaDAO().getConf(); + final Configuration config = accumuloInstanceDriver.getDao().getConf(); config.set(ConfigUtils.CLOUDBASE_INSTANCE, "wrong instance"); @@ -147,6 +164,34 @@ public class AccumuloRyaStatementStoreTest { } @Test + public void testAddRemoveAddStatement() throws Exception { + final AccumuloRyaStatementStore accumuloRyaStatementStore = createAccumuloRyaStatementStore(); + final RyaStatement stmnt = RYA_STATEMENTS.get(0); + accumuloRyaStatementStore.addStatement(stmnt); + assertTrue(accumuloRyaStatementStore.containsStatement(stmnt)); + assertEquals(1, count(accumuloRyaStatementStore)); + + accumuloRyaStatementStore.removeStatement(stmnt); + assertFalse(accumuloRyaStatementStore.containsStatement(stmnt)); + assertEquals(0, count(accumuloRyaStatementStore)); + + accumuloRyaStatementStore.addStatement(stmnt); + assertTrue(accumuloRyaStatementStore.containsStatement(stmnt)); + assertEquals(1, count(accumuloRyaStatementStore)); + } + + private int count(final RyaStatementStore store) throws FetchStatementException { + final Iterator<RyaStatement> statements = store.fetchStatements(); + int count = 0; + while(statements.hasNext()) { + final RyaStatement statement = statements.next(); + System.out.println(statement.getObject().getData() + " " + statement.getTimestamp()); + count++; + } + return count; + } + + @Test public void testRemoveStatement() throws MergerException { final AccumuloRyaStatementStore accumuloRyaStatementStore = createAccumuloRyaStatementStore(); @@ -360,7 +405,6 @@ public class AccumuloRyaStatementStoreTest { // Other when(accumuloMergeConfiguration.getMergePolicy()).thenReturn(MergePolicy.TIMESTAMP); - when(accumuloMergeConfiguration.getToolStartTime()).thenReturn(AccumuloExportConstants.convertDateToStartTimeString(new Date())); return accumuloMergeConfiguration; } @@ -372,13 +416,8 @@ public class AccumuloRyaStatementStoreTest { private static AccumuloRyaStatementStore createAccumuloRyaStatementStore(final AccumuloMergeConfiguration accumuloMergeConfiguration) throws MergerException { final String instance = accumuloMergeConfiguration.getParentRyaInstanceName(); - final String username = accumuloMergeConfiguration.getParentUsername(); - final String password = accumuloMergeConfiguration.getParentPassword(); - final InstanceType instanceType = accumuloMergeConfiguration.getParentInstanceType(); final String tablePrefix = accumuloMergeConfiguration.getParentTablePrefix(); - final String auths = accumuloMergeConfiguration.getParentAuths(); - final String zooKeepers = accumuloMergeConfiguration.getParentZookeepers(); - return new AccumuloRyaStatementStore(instance, username, password, instanceType, tablePrefix, auths, zooKeepers); + return new AccumuloRyaStatementStore(accumuloInstanceDriver.getDao(), tablePrefix, instance); } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java index 41d6495..34d1ba9 100644 --- a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java +++ b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java @@ -20,11 +20,10 @@ package org.apache.rya.export.accumulo; import java.util.Date; +import org.apache.rya.api.domain.RyaStatement; +import org.apache.rya.api.domain.RyaURI; import org.apache.rya.export.accumulo.util.AccumuloRyaUtils; -import mvm.rya.api.domain.RyaStatement; -import mvm.rya.api.domain.RyaURI; - /** * Utility methods for testing merging/copying. */ http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java index d851d90..467476c 100644 --- a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java +++ b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java @@ -35,14 +35,13 @@ import org.apache.accumulo.core.security.Authorizations; import org.apache.accumulo.core.security.ColumnVisibility; import org.apache.accumulo.minicluster.MiniAccumuloCluster; import org.apache.log4j.Logger; -import org.apache.rya.export.accumulo.common.InstanceType; +import org.apache.rya.accumulo.AccumuloRdfConfiguration; +import org.apache.rya.accumulo.AccumuloRyaDAO; +import org.apache.rya.api.domain.RyaStatement; +import org.apache.rya.api.persist.RyaDAOException; +import org.apache.rya.export.InstanceType; import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver; -import mvm.rya.accumulo.AccumuloRdfConfiguration; -import mvm.rya.accumulo.AccumuloRyaDAO; -import mvm.rya.api.domain.RyaStatement; -import mvm.rya.api.persist.RyaDAOException; - /** * Handles running a {@link MiniAccumuloCluster} or a {@link MockInstance} for a parent and child instance for testing. */ @@ -89,7 +88,7 @@ public class AccumuloDualInstanceDriver { */ public AccumuloDualInstanceDriver(final InstanceType instanceType, final boolean shouldCreateIndices, final boolean isParentReadOnly, final boolean isChildReadOnly, final boolean doesChildInitiallyExist) { this.instanceType = instanceType; - this.isMock = instanceType.isMock(); + isMock = instanceType == InstanceType.MOCK; this.shouldCreateIndices = shouldCreateIndices; this.isParentReadOnly = isParentReadOnly; this.isChildReadOnly = isChildReadOnly; @@ -186,7 +185,7 @@ public class AccumuloDualInstanceDriver { */ public void tearDown() throws Exception { try { - //tearDownTables(); + tearDownTables(); tearDownDaos(); tearDownInstances(); } finally { http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java index eca01ee..a5adca1 100644 --- a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java +++ b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java @@ -1,14 +1,32 @@ +/* + * 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.rya.export.accumulo.parent; import static org.junit.Assert.assertEquals; import java.util.Date; -import org.apache.rya.export.accumulo.common.InstanceType; +import org.apache.rya.export.InstanceType; import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver; -import org.apache.rya.export.api.parent.MergeParentMetadata; -import org.apache.rya.export.api.parent.ParentMetadataDoesNotExistException; -import org.apache.rya.export.api.parent.ParentMetadataExistsException; +import org.apache.rya.export.api.metadata.MergeParentMetadata; +import org.apache.rya.export.api.metadata.ParentMetadataDoesNotExistException; +import org.apache.rya.export.api.metadata.ParentMetadataExistsException; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -25,7 +43,7 @@ public class AccumuloParentMetadataRepositoryAdapterTest { private static final InstanceType INSTANCE_TYPE = InstanceType.MOCK; - private static final boolean IS_MOCK = INSTANCE_TYPE.isMock(); + private static final boolean IS_MOCK = INSTANCE_TYPE == InstanceType.MOCK; private static final String USER_NAME = IS_MOCK ? "test_user" : AccumuloInstanceDriver.ROOT_USER_NAME; private static final String PASSWORD = "password"; private static final String INSTANCE_NAME = "test_instance";
