1/*2 * Licensed to the Apache Software Foundation (ASF) under one3 * or more contributor license agreements. See the NOTICE file4 * distributed with this work for additional information5 * regarding copyright ownership. The ASF licenses this file6 * to you under the Apache License, Version 2.0 (the7 * "License"); you may not use this file except in compliance8 * with the License. You may obtain a copy of the License at9 *10 * http://www.apache.org/licenses/LICENSE-2.011 *12 * Unless required by applicable law or agreed to in writing, software13 * distributed under the License is distributed on an "AS IS" BASIS,14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15 * See the License for the specific language governing permissions and16 * limitations under the License.17 */18package org.apache.giraph.factories;
1920import org.apache.giraph.conf.GiraphConfiguration;
21import org.apache.giraph.conf.GiraphConstants;
22import org.apache.giraph.conf.ImmutableClassesGiraphConfiguration;
23import org.apache.giraph.graph.Computation;
24import org.apache.giraph.utils.ReflectionUtils;
25import org.apache.hadoop.io.Writable;
26import org.apache.hadoop.io.WritableComparable;
2728/**29 * Default computation factory that simply creates java computation object30 *31 * @param <I> Vertex ID32 * @param <V> Vertex Value33 * @param <E> Edge Value34 */35publicclass DefaultComputationFactory<I extends WritableComparable,
36 V extends Writable, E extends Writable>
37implements ComputationFactory<I, V, E, Writable, Writable> {
38 @Override
39publicvoid initialize(ImmutableClassesGiraphConfiguration<I, V, E> conf) {
40// Nothing to do here41 }
4243 @Override
44public Computation<I, V, E, Writable, Writable> createComputation(
45 ImmutableClassesGiraphConfiguration<I, V, E> conf) {
46 Class<? extends Computation> klass = conf.getComputationClass();
47return ReflectionUtils.newInstance(klass, conf);
48 }
4950 @Override
51publicvoid checkConfiguration(
52 ImmutableClassesGiraphConfiguration<I, V, E> conf) {
53if (conf.getComputationClass() == null) {
54thrownew IllegalArgumentException("checkConfiguration: Null " +
55 GiraphConstants.COMPUTATION_CLASS.getKey());
56 }
57 }
5859 @Override
60public String computationName(GiraphConfiguration conf) {
61return conf.getComputationClass().getSimpleName();
62 }
63 }