1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * 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 and 16 * limitations under the License. 17 */ 18 package org.apache.giraph.jython; 19 20 import org.apache.giraph.conf.BooleanConfOption; 21 import org.apache.giraph.conf.EnumConfOption; 22 import org.apache.giraph.conf.StrConfOption; 23 import org.apache.giraph.graph.GraphType; 24 import org.apache.giraph.graph.Language; 25 26 /** 27 * Jython related {@link org.apache.hadoop.conf.Configuration} options 28 */ 29 public class JythonOptions { 30 /** Options for a graph type */ 31 public static class JythonGraphTypeOptions { 32 /** user graph type */ 33 private final GraphType graphType; 34 /** Option for Jython class name implementing type */ 35 private final StrConfOption jythonClassNameOption; 36 /** Option for whether Jython type needs a wrapper */ 37 private final BooleanConfOption needsWrapperOption; 38 /** Option for language */ 39 private final EnumConfOption<Language> languageOption; 40 41 /** 42 * Constructor 43 * 44 * @param graphType GraphType 45 */ 46 public JythonGraphTypeOptions(GraphType graphType) { 47 this.graphType = graphType; 48 jythonClassNameOption = new StrConfOption("giraph.jython." + 49 graphType.dotString() + ".class.name", null, 50 "Name of class in Jython implementing " + graphType.spaceString()); 51 needsWrapperOption = new BooleanConfOption("giraph.jython." + 52 graphType.dotString() + ".needs.wrapper", false, 53 "Whether the " + graphType.spaceString() + 54 " jython type needs a wrapper"); 55 languageOption = EnumConfOption.create("giraph." + 56 graphType.dotString() + ".language", Language.class, Language.JAVA, 57 "Language " + graphType.spaceString() + " is implemented in"); 58 } 59 60 public GraphType getGraphType() { 61 return graphType; 62 } 63 64 public BooleanConfOption getNeedsWrapperOption() { 65 return needsWrapperOption; 66 } 67 68 public StrConfOption getJythonClassNameOption() { 69 return jythonClassNameOption; 70 } 71 72 private EnumConfOption<Language> getLanguageOption() { 73 return languageOption; 74 } 75 } 76 77 /** vertex id options */ 78 public static final JythonGraphTypeOptions JYTHON_VERTEX_ID = 79 new JythonGraphTypeOptions(GraphType.VERTEX_ID); 80 81 /** vertex value options */ 82 public static final JythonGraphTypeOptions JYTHON_VERTEX_VALUE = 83 new JythonGraphTypeOptions(GraphType.VERTEX_VALUE); 84 85 /** edge value options */ 86 public static final JythonGraphTypeOptions JYTHON_EDGE_VALUE = 87 new JythonGraphTypeOptions(GraphType.EDGE_VALUE); 88 89 /** outgonig message value options */ 90 public static final JythonGraphTypeOptions JYTHON_OUT_MSG_VALUE = 91 new JythonGraphTypeOptions(GraphType.OUTGOING_MESSAGE_VALUE); 92 93 /** Name of Computation class in Jython script */ 94 public static final StrConfOption JYTHON_COMPUTATION_CLASS_NAME = 95 new StrConfOption("giraph.jython.class", null, 96 "Name of Computation class in Jython script"); 97 98 /** Don't construct */ 99 private JythonOptions() { } 100 }