Author: henry Date: Thu Jan 21 21:44:21 2010 New Revision: 901869 URL: http://svn.apache.org/viewvc?rev=901869&view=rev Log: ZOOKEEPER-648. Fix releaseaudit warning count to zero (phunt via henry)
Modified: hadoop/zookeeper/trunk/CHANGES.txt hadoop/zookeeper/trunk/build.xml hadoop/zookeeper/trunk/ivy.xml hadoop/zookeeper/trunk/src/contrib/zkfuse/src/doxygen.cfg hadoop/zookeeper/trunk/src/contrib/zkfuse/src/log4cxx.properties hadoop/zookeeper/trunk/src/contrib/zktreeutil/tests/zk_sample.xml hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CGenerator.java hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CppGenerator.java hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/JRecord.java hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/generated/package.html hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/package.html hadoop/zookeeper/trunk/src/java/main/org/apache/jute/package.html hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/package.html hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/version/util/VerGen.java hadoop/zookeeper/trunk/src/java/main/overview.html Modified: hadoop/zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/CHANGES.txt (original) +++ hadoop/zookeeper/trunk/CHANGES.txt Thu Jan 21 21:44:21 2010 @@ -237,7 +237,10 @@ ZOOKEEPER-426. Windows versions of zookeeper scripts (David Bosschaert via breed) - ZOOKEEPER-638. upgrade ivy to 2.1.0 final from 2.1.0 release candidate (phunt via breed) + ZOOKEEPER-638. upgrade ivy to 2.1.0 final from 2.1.0 release + candidate (phunt via breed) + + ZOOKEEPER-648. Fix releaseaudit warning count to zero (phunt via henry) NEW FEATURES: ZOOKEEPER-539. generate eclipse project via ant target. (phunt via mahadev) Modified: hadoop/zookeeper/trunk/build.xml URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/build.xml?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/build.xml (original) +++ hadoop/zookeeper/trunk/build.xml Thu Jan 21 21:44:21 2010 @@ -302,6 +302,12 @@ pattern="${ivy.jdiff.lib}/[artifact]-[revision].[ext]"/> </target> + <target name="ivy-retrieve-releaseaudit" depends="init,ivy-init"> + <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="releaseaudit" + pattern="${ivy.lib}/[artifact]-[revision].[ext]"/> + <ivy:cachepath pathid="releaseaudit-classpath" conf="releaseaudit"/> + </target> + <target name="compile" depends="ivy-retrieve,clover,build-generated"> <javac srcdir="${java.src.dir}" destdir="${build.classes}" target="${javac.target}" debug="on"> @@ -1074,15 +1080,47 @@ <!-- ================================================================== --> <!-- Perform audit activities for the release --> <!-- ================================================================== --> - - <target name="get-rats" depends="package" description="Downloads the release audit tool"> - <get src="${rats_url}" dest="${lib.dir}/rats.jar" usetimestamp="false" /> - </target> - - <target name="releaseaudit" depends="get-rats" description="Release Audit activities"> - <java classname="${rat.reporting.classname}" fork="true" classpath="${lib.dir}/rats.jar"> - <arg value="${build.dir}/${final.name}"/> - </java> + <target name="rats-taskdef" depends="ivy-retrieve-releaseaudit"> + <typedef format="xml" resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:org.apache.rat.anttasks" + classpathref="releaseaudit-classpath"/> + </target> + + <target name="releaseaudit" depends="package,rats-taskdef" description="Release Audit activities"> + <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"> + <fileset dir="${dist.dir}"> + <exclude name="**/*.m4"/> + <exclude name="**/*.md5"/> + <exclude name="**/*.pom"/> + <exclude name="**/*.sha1"/> + <exclude name="**/.gitignore"/> + <exclude name="**/Makefile**"/> + <exclude name="**/configure**"/> + <exclude name="**/*Doxyfile"/> + <exclude name="**/*.am"/> + <exclude name="**/compile"/> + <exclude name="**/depcomp"/> + <exclude name="**/install-sh"/> + <exclude name="**/ltmain.sh"/> + <exclude name="**/missing"/> + <exclude name="**/wrappers*.opt"/> + <exclude name="CHANGES.txt"/> + <exclude name="**/VERSION"/> + <exclude name="**/ChangeLog"/> + <exclude name="**/OldChangeLog"/> + <exclude name="**/Changes"/> + <exclude name="**/contrib/zkperl/MANIFEST"/> + <exclude name="**/conf/*"/> + <exclude name="**/docs/"/> + <exclude name="**/lib/jdiff/"/> + <exclude name="src/c/autom4te.cache/**"/> + <exclude name="src/c/config**"/> + <exclude name="src/c/src/hashtable/"/> + <exclude name="src/java/generated/.generated/"/> + <exclude name="src/java/test/checkstyle*.xml"/> + <exclude name="src/java/test/checkstyle*.xsl"/> + <exclude name="src/java/test/config/findbugs*.xml"/> + </fileset> + </rat:report> </target> <target name="findbugs.check" depends="check-for-findbugs" unless="findbugs.present"> Modified: hadoop/zookeeper/trunk/ivy.xml URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/ivy.xml?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/ivy.xml (original) +++ hadoop/zookeeper/trunk/ivy.xml Thu Jan 21 21:44:21 2010 @@ -29,6 +29,7 @@ <conf name="default"/> <conf name="test"/> <conf name="jdiff" visibility="private"/> + <conf name="releaseaudit" visibility="private" description="Artifacts required for releaseaudit target"/> </configurations> <dependencies> @@ -44,6 +45,13 @@ conf="jdiff->default"/> <dependency org="xerces" name="xerces" rev="1.4.4" conf="jdiff->default"/> + + <dependency org="org.apache.rat" name="apache-rat-tasks" + rev="0.6" conf="releaseaudit->default"/> + <dependency org="commons-lang" name="commons-lang" + rev="2.4" conf="releaseaudit->default"/> + <dependency org="commons-collections" name="commons-collections" + rev="3.1" conf="releaseaudit->default"/> </dependencies> </ivy-module> Modified: hadoop/zookeeper/trunk/src/contrib/zkfuse/src/doxygen.cfg URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/contrib/zkfuse/src/doxygen.cfg?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/contrib/zkfuse/src/doxygen.cfg (original) +++ hadoop/zookeeper/trunk/src/contrib/zkfuse/src/doxygen.cfg Thu Jan 21 21:44:21 2010 @@ -1,5 +1,21 @@ # Doxyfile 1.4.3 +# 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. + # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # Modified: hadoop/zookeeper/trunk/src/contrib/zkfuse/src/log4cxx.properties URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/contrib/zkfuse/src/log4cxx.properties?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/contrib/zkfuse/src/log4cxx.properties (original) +++ hadoop/zookeeper/trunk/src/contrib/zkfuse/src/log4cxx.properties Thu Jan 21 21:44:21 2010 @@ -1,3 +1,19 @@ +# 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. + # Set root logger level to DEBUG and its only appender to A1. log4j.rootLogger=TRACE, A1 Modified: hadoop/zookeeper/trunk/src/contrib/zktreeutil/tests/zk_sample.xml URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/contrib/zktreeutil/tests/zk_sample.xml?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/contrib/zktreeutil/tests/zk_sample.xml (original) +++ hadoop/zookeeper/trunk/src/contrib/zktreeutil/tests/zk_sample.xml Thu Jan 21 21:44:21 2010 @@ -1,4 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> + <root> <zknode name="myapp"> <zknode name="version-1.0"> Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CGenerator.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CGenerator.java?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CGenerator.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CGenerator.java Thu Jan 21 21:44:21 2010 @@ -32,13 +32,13 @@ private ArrayList<JFile> mInclFiles; private ArrayList<JRecord> mRecList; private final File outputDirectory; - + /** Creates a new instance of CppGenerator * * @param name possibly full pathname to the file * @param ilist included files (as JFile) * @param rlist List of records defined within this file - * @param outputDirectory + * @param outputDirectory */ CGenerator(String name, ArrayList<JFile> ilist, ArrayList<JRecord> rlist, File outputDirectory) @@ -48,7 +48,7 @@ mInclFiles = ilist; mRecList = rlist; } - + /** * Generate C++ code. This method only creates the requested file(s) * and spits-out file-level elements (such as include statements etc.) @@ -63,9 +63,48 @@ } FileWriter c = new FileWriter(new File(outputDirectory, mName+".c")); FileWriter h = new FileWriter(new File(outputDirectory, mName+".h")); + + h.write("/**\n"); + h.write("* Licensed to the Apache Software Foundation (ASF) under one\n"); + h.write("* or more contributor license agreements. See the NOTICE file\n"); + h.write("* distributed with this work for additional information\n"); + h.write("* regarding copyright ownership. The ASF licenses this file\n"); + h.write("* to you under the Apache License, Version 2.0 (the\n"); + h.write("* \"License\"); you may not use this file except in compliance\n"); + h.write("* with the License. You may obtain a copy of the License at\n"); + h.write("*\n"); + h.write("* http://www.apache.org/licenses/LICENSE-2.0\n"); + h.write("*\n"); + h.write("* Unless required by applicable law or agreed to in writing, software\n"); + h.write("* distributed under the License is distributed on an \"AS IS\" BASIS,\n"); + h.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"); + h.write("* See the License for the specific language governing permissions and\n"); + h.write("* limitations under the License.\n"); + h.write("*/\n"); + h.write("\n"); + + c.write("/**\n"); + c.write("* Licensed to the Apache Software Foundation (ASF) under one\n"); + c.write("* or more contributor license agreements. See the NOTICE file\n"); + c.write("* distributed with this work for additional information\n"); + c.write("* regarding copyright ownership. The ASF licenses this file\n"); + c.write("* to you under the Apache License, Version 2.0 (the\n"); + c.write("* \"License\"); you may not use this file except in compliance\n"); + c.write("* with the License. You may obtain a copy of the License at\n"); + c.write("*\n"); + c.write("* http://www.apache.org/licenses/LICENSE-2.0\n"); + c.write("*\n"); + c.write("* Unless required by applicable law or agreed to in writing, software\n"); + c.write("* distributed under the License is distributed on an \"AS IS\" BASIS,\n"); + c.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"); + c.write("* See the License for the specific language governing permissions and\n"); + c.write("* limitations under the License.\n"); + c.write("*/\n"); + c.write("\n"); + h.write("#ifndef __"+mName.toUpperCase().replace('.','_')+"__\n"); h.write("#define __"+mName.toUpperCase().replace('.','_')+"__\n"); - + h.write("#include \"recordio.h\"\n"); for (Iterator<JFile> i = mInclFiles.iterator(); i.hasNext();) { JFile f = i.next(); @@ -76,15 +115,15 @@ c.write("#include <stdlib.h>\n"); // need it for calloc() & free() c.write("#include \""+mName+".h\"\n\n"); - + for (Iterator<JRecord> i = mRecList.iterator(); i.hasNext();) { JRecord jr = i.next(); jr.genCCode(h, c); } - + h.write("\n#ifdef __cplusplus\n}\n#endif\n\n"); h.write("#endif //"+mName.toUpperCase().replace('.','_')+"__\n"); - + h.close(); c.close(); } Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CppGenerator.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CppGenerator.java?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CppGenerator.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/CppGenerator.java Thu Jan 21 21:44:21 2010 @@ -32,13 +32,13 @@ private ArrayList<JFile> mInclFiles; private ArrayList<JRecord> mRecList; private final File outputDirectory; - + /** Creates a new instance of CppGenerator * * @param name possibly full pathname to the file * @param ilist included files (as JFile) * @param rlist List of records defined within this file - * @param outputDirectory + * @param outputDirectory */ CppGenerator(String name, ArrayList<JFile> ilist, ArrayList<JRecord> rlist, File outputDirectory) @@ -48,7 +48,7 @@ mInclFiles = ilist; mRecList = rlist; } - + /** * Generate C++ code. This method only creates the requested file(s) * and spits-out file-level elements (such as include statements etc.) @@ -63,23 +63,62 @@ } FileWriter cc = new FileWriter(new File(outputDirectory, mName+".cc")); FileWriter hh = new FileWriter(new File(outputDirectory, mName+".hh")); + + hh.write("/**\n"); + hh.write("* Licensed to the Apache Software Foundation (ASF) under one\n"); + hh.write("* or more contributor license agreements. See the NOTICE file\n"); + hh.write("* distributed with this work for additional information\n"); + hh.write("* regarding copyright ownership. The ASF licenses this file\n"); + hh.write("* to you under the Apache License, Version 2.0 (the\n"); + hh.write("* \"License\"); you may not use this file except in compliance\n"); + hh.write("* with the License. You may obtain a copy of the License at\n"); + hh.write("*\n"); + hh.write("* http://www.apache.org/licenses/LICENSE-2.0\n"); + hh.write("*\n"); + hh.write("* Unless required by applicable law or agreed to in writing, software\n"); + hh.write("* distributed under the License is distributed on an \"AS IS\" BASIS,\n"); + hh.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"); + hh.write("* See the License for the specific language governing permissions and\n"); + hh.write("* limitations under the License.\n"); + hh.write("*/\n"); + hh.write("\n"); + + cc.write("/**\n"); + cc.write("* Licensed to the Apache Software Foundation (ASF) under one\n"); + cc.write("* or more contributor license agreements. See the NOTICE file\n"); + cc.write("* distributed with this work for additional information\n"); + cc.write("* regarding copyright ownership. The ASF licenses this file\n"); + cc.write("* to you under the Apache License, Version 2.0 (the\n"); + cc.write("* \"License\"); you may not use this file except in compliance\n"); + cc.write("* with the License. You may obtain a copy of the License at\n"); + cc.write("*\n"); + cc.write("* http://www.apache.org/licenses/LICENSE-2.0\n"); + cc.write("*\n"); + cc.write("* Unless required by applicable law or agreed to in writing, software\n"); + cc.write("* distributed under the License is distributed on an \"AS IS\" BASIS,\n"); + cc.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"); + cc.write("* See the License for the specific language governing permissions and\n"); + cc.write("* limitations under the License.\n"); + cc.write("*/\n"); + cc.write("\n"); + hh.write("#ifndef __"+mName.toUpperCase().replace('.','_')+"__\n"); hh.write("#define __"+mName.toUpperCase().replace('.','_')+"__\n"); - + hh.write("#include \"recordio.hh\"\n"); for (Iterator<JFile> i = mInclFiles.iterator(); i.hasNext();) { JFile f = i.next(); hh.write("#include \""+f.getName()+".hh\"\n"); } cc.write("#include \""+mName+".hh\"\n"); - + for (Iterator<JRecord> i = mRecList.iterator(); i.hasNext();) { JRecord jr = i.next(); jr.genCppCode(hh, cc); } - + hh.write("#endif //"+mName.toUpperCase().replace('.','_')+"__\n"); - + hh.close(); cc.close(); } Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/JRecord.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/JRecord.java?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/JRecord.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/JRecord.java Thu Jan 21 21:44:21 2010 @@ -34,7 +34,7 @@ private String mName; private String mModule; private ArrayList<JField> mFields; - + /** * Creates a new instance of JRecord */ @@ -47,31 +47,31 @@ mModule = name.substring(0, idx); mFields = flist; } - + public String getName() { return mName; } - + public String getJavaFQName() { return mFQName; } - + public String getCppFQName() { return mFQName.replaceAll("\\.", "::"); } - + public String getJavaPackage() { return mModule; } - + public String getCppNameSpace() { return mModule.replaceAll("\\.", "::"); } - + public ArrayList<JField> getFields() { return mFields; } - + public String getSignature() { StringBuffer sb = new StringBuffer(); sb.append("L").append(mName).append("("); @@ -82,15 +82,15 @@ sb.append(")"); return sb.toString(); } - + public String genCppDecl(String fname) { return " "+mName+" "+fname+";\n"; } - + public String genJavaReadMethod(String fname, String tag) { return genJavaReadWrapper(fname, tag, false); } - + public String genJavaReadWrapper(String fname, String tag, boolean decl) { StringBuffer ret = new StringBuffer(""); if (decl) { @@ -100,161 +100,161 @@ ret.append(" a_.readRecord("+fname+",\""+tag+"\");\n"); return ret.toString(); } - + public String genJavaWriteWrapper(String fname, String tag) { return " a_.writeRecord("+fname+",\""+tag+"\");\n"; } - + static HashMap<String, String> vectorStructs = new HashMap<String, String>(); public void genCCode(FileWriter h, FileWriter c) throws IOException { - for (JField f : mFields) { - if (f.getType() instanceof JVector) { - JVector jv = (JVector)f.getType(); - JType jvType = jv.getElementType(); - String struct_name = JVector.extractVectorName(jvType); - if (vectorStructs.get(struct_name) == null) { - vectorStructs.put(struct_name, struct_name); - h.write("struct " + struct_name + " {\n int32_t count;\n" + jv.getElementType().genCDecl("*data") + ";\n};\n"); - h.write("int serialize_" + struct_name + "(struct oarchive *out, const char *tag, struct " + struct_name + " *v);\n"); - h.write("int deserialize_" + struct_name + "(struct iarchive *in, const char *tag, struct " + struct_name + " *v);\n"); - h.write("int allocate_" + struct_name + "(struct " + struct_name + " *v, int32_t len);\n"); - h.write("int deallocate_" + struct_name + "(struct " + struct_name + " *v);\n"); - c.write("int allocate_" + struct_name + "(struct " + struct_name + " *v, int32_t len) {\n"); - c.write(" if (!len) {\n"); - c.write(" v->count = 0;\n"); - c.write(" v->data = 0;\n"); - c.write(" } else {\n"); - c.write(" v->count = len;\n"); - c.write(" v->data = calloc(sizeof(*v->data), len);\n"); - c.write(" }\n"); - c.write(" return 0;\n"); - c.write("}\n"); - c.write("int deallocate_" + struct_name + "(struct " + struct_name + " *v) {\n"); - c.write(" if (v->data) {\n"); - c.write(" int32_t i;\n"); - c.write(" for(i=0;i<v->count; i++) {\n"); - c.write(" deallocate_"+JRecord.extractMethodSuffix(jvType)+"(&v->data[i]);\n"); - c.write(" }\n"); - c.write(" free(v->data);\n"); - c.write(" v->data = 0;\n"); - c.write(" }\n"); - c.write(" return 0;\n"); - c.write("}\n"); - c.write("int serialize_" + struct_name + "(struct oarchive *out, const char *tag, struct " + struct_name + " *v)\n"); - c.write("{\n"); - c.write(" int32_t count = v->count;\n"); - c.write(" int rc = 0;\n"); - c.write(" int32_t i;\n"); - c.write(" rc = out->start_vector(out, tag, &count);\n"); - c.write(" for(i=0;i<v->count;i++) {\n"); - genSerialize(c, jvType, "data", "data[i]"); - c.write(" }\n"); - c.write(" rc = rc ? : out->end_vector(out, tag);\n"); - c.write(" return rc;\n"); - c.write("}\n"); - c.write("int deserialize_" + struct_name + "(struct iarchive *in, const char *tag, struct " + struct_name + " *v)\n"); - c.write("{\n"); - c.write(" int rc = 0;\n"); - c.write(" int32_t i;\n"); - c.write(" rc = in->start_vector(in, tag, &v->count);\n"); - c.write(" v->data = calloc(v->count, sizeof(*v->data));\n"); - c.write(" for(i=0;i<v->count;i++) {\n"); - genDeserialize(c, jvType, "value", "data[i]"); - c.write(" }\n"); - c.write(" rc = in->end_vector(in, tag);\n"); - c.write(" return rc;\n"); - c.write("}\n"); - - } - } - } - String rec_name = getName(); - h.write("struct " + rec_name + " {\n"); - for (JField f : mFields) { - h.write(f.genCDecl()); - } - h.write("};\n"); - h.write("int serialize_" + rec_name + "(struct oarchive *out, const char *tag, struct " + rec_name + " *v);\n"); - h.write("int deserialize_" + rec_name + "(struct iarchive *in, const char *tag, struct " + rec_name + "*v);\n"); - h.write("void deallocate_" + rec_name + "(struct " + rec_name + "*);\n"); - c.write("int serialize_" + rec_name + "(struct oarchive *out, const char *tag, struct " + rec_name + " *v)"); - c.write("{\n"); - c.write(" int rc;\n"); - c.write(" rc = out->start_record(out, tag);\n"); - for(JField f : mFields) { - genSerialize(c, f.getType(), f.getTag(), f.getName()); - } - c.write(" rc = rc ? : out->end_record(out, tag);\n"); - c.write(" return rc;\n"); - c.write("}\n"); - c.write("int deserialize_" + rec_name + "(struct iarchive *in, const char *tag, struct " + rec_name + "*v)"); - c.write("{\n"); - c.write(" int rc;\n"); - c.write(" rc = in->start_record(in, tag);\n"); - for(JField f : mFields) { - genDeserialize(c, f.getType(), f.getTag(), f.getName()); - } - c.write(" rc = rc ? : in->end_record(in, tag);\n"); - c.write(" return rc;\n"); - c.write("}\n"); - c.write("void deallocate_" + rec_name + "(struct " + rec_name + "*v)"); - c.write("{\n"); - for(JField f : mFields) { - if (f.getType() instanceof JRecord) { - c.write(" deallocate_" + extractStructName(f.getType()) + "(&v->" + f.getName() + ");\n"); - } else if (f.getType() instanceof JVector) { - JVector vt = (JVector)f.getType(); - c.write(" deallocate_" + JVector.extractVectorName(vt.getElementType())+ "(&v->"+f.getName()+");\n"); - } else if (f.getType() instanceof JCompType) { - c.write(" deallocate_" + extractMethodSuffix(f.getType()) + "(&v->"+f.getName()+");\n"); - } - } - c.write("}\n"); - } - - private void genSerialize(FileWriter c, JType type, String tag, String name) throws IOException { - if (type instanceof JRecord) { - c.write(" rc = rc ? : serialize_" + extractStructName(type) + "(out, \"" + tag + "\", &v->" + name + ");\n"); - } else if (type instanceof JVector) { - c.write(" rc = rc ? : serialize_" + JVector.extractVectorName(((JVector)type).getElementType()) + "(out, \"" + tag + "\", &v->" + name + ");\n"); - } else { - c.write(" rc = rc ? : out->serialize_" + extractMethodSuffix(type) + "(out, \"" + tag + "\", &v->" + name + ");\n"); - } - } - - private void genDeserialize(FileWriter c, JType type, String tag, String name) throws IOException { - if (type instanceof JRecord) { - c.write(" rc = rc ? : deserialize_" + extractStructName(type) + "(in, \"" + tag + "\", &v->" + name + ");\n"); - } else if (type instanceof JVector) { - c.write(" rc = rc ? : deserialize_" + JVector.extractVectorName(((JVector)type).getElementType()) + "(in, \"" + tag + "\", &v->" + name + ");\n"); - } else { - c.write(" rc = rc ? : in->deserialize_" + extractMethodSuffix(type) + "(in, \"" + tag + "\", &v->" + name + ");\n"); - } - } - - static String extractMethodSuffix(JType t) { - if (t instanceof JRecord) { - return extractStructName(t); - } - return t.getMethodSuffix(); - } - - static private String extractStructName(JType t) { - String type = t.getCType(); - if (!type.startsWith("struct ")) return type; - return type.substring("struct ".length()); - } - + for (JField f : mFields) { + if (f.getType() instanceof JVector) { + JVector jv = (JVector)f.getType(); + JType jvType = jv.getElementType(); + String struct_name = JVector.extractVectorName(jvType); + if (vectorStructs.get(struct_name) == null) { + vectorStructs.put(struct_name, struct_name); + h.write("struct " + struct_name + " {\n int32_t count;\n" + jv.getElementType().genCDecl("*data") + ";\n};\n"); + h.write("int serialize_" + struct_name + "(struct oarchive *out, const char *tag, struct " + struct_name + " *v);\n"); + h.write("int deserialize_" + struct_name + "(struct iarchive *in, const char *tag, struct " + struct_name + " *v);\n"); + h.write("int allocate_" + struct_name + "(struct " + struct_name + " *v, int32_t len);\n"); + h.write("int deallocate_" + struct_name + "(struct " + struct_name + " *v);\n"); + c.write("int allocate_" + struct_name + "(struct " + struct_name + " *v, int32_t len) {\n"); + c.write(" if (!len) {\n"); + c.write(" v->count = 0;\n"); + c.write(" v->data = 0;\n"); + c.write(" } else {\n"); + c.write(" v->count = len;\n"); + c.write(" v->data = calloc(sizeof(*v->data), len);\n"); + c.write(" }\n"); + c.write(" return 0;\n"); + c.write("}\n"); + c.write("int deallocate_" + struct_name + "(struct " + struct_name + " *v) {\n"); + c.write(" if (v->data) {\n"); + c.write(" int32_t i;\n"); + c.write(" for(i=0;i<v->count; i++) {\n"); + c.write(" deallocate_"+JRecord.extractMethodSuffix(jvType)+"(&v->data[i]);\n"); + c.write(" }\n"); + c.write(" free(v->data);\n"); + c.write(" v->data = 0;\n"); + c.write(" }\n"); + c.write(" return 0;\n"); + c.write("}\n"); + c.write("int serialize_" + struct_name + "(struct oarchive *out, const char *tag, struct " + struct_name + " *v)\n"); + c.write("{\n"); + c.write(" int32_t count = v->count;\n"); + c.write(" int rc = 0;\n"); + c.write(" int32_t i;\n"); + c.write(" rc = out->start_vector(out, tag, &count);\n"); + c.write(" for(i=0;i<v->count;i++) {\n"); + genSerialize(c, jvType, "data", "data[i]"); + c.write(" }\n"); + c.write(" rc = rc ? : out->end_vector(out, tag);\n"); + c.write(" return rc;\n"); + c.write("}\n"); + c.write("int deserialize_" + struct_name + "(struct iarchive *in, const char *tag, struct " + struct_name + " *v)\n"); + c.write("{\n"); + c.write(" int rc = 0;\n"); + c.write(" int32_t i;\n"); + c.write(" rc = in->start_vector(in, tag, &v->count);\n"); + c.write(" v->data = calloc(v->count, sizeof(*v->data));\n"); + c.write(" for(i=0;i<v->count;i++) {\n"); + genDeserialize(c, jvType, "value", "data[i]"); + c.write(" }\n"); + c.write(" rc = in->end_vector(in, tag);\n"); + c.write(" return rc;\n"); + c.write("}\n"); + + } + } + } + String rec_name = getName(); + h.write("struct " + rec_name + " {\n"); + for (JField f : mFields) { + h.write(f.genCDecl()); + } + h.write("};\n"); + h.write("int serialize_" + rec_name + "(struct oarchive *out, const char *tag, struct " + rec_name + " *v);\n"); + h.write("int deserialize_" + rec_name + "(struct iarchive *in, const char *tag, struct " + rec_name + "*v);\n"); + h.write("void deallocate_" + rec_name + "(struct " + rec_name + "*);\n"); + c.write("int serialize_" + rec_name + "(struct oarchive *out, const char *tag, struct " + rec_name + " *v)"); + c.write("{\n"); + c.write(" int rc;\n"); + c.write(" rc = out->start_record(out, tag);\n"); + for(JField f : mFields) { + genSerialize(c, f.getType(), f.getTag(), f.getName()); + } + c.write(" rc = rc ? : out->end_record(out, tag);\n"); + c.write(" return rc;\n"); + c.write("}\n"); + c.write("int deserialize_" + rec_name + "(struct iarchive *in, const char *tag, struct " + rec_name + "*v)"); + c.write("{\n"); + c.write(" int rc;\n"); + c.write(" rc = in->start_record(in, tag);\n"); + for(JField f : mFields) { + genDeserialize(c, f.getType(), f.getTag(), f.getName()); + } + c.write(" rc = rc ? : in->end_record(in, tag);\n"); + c.write(" return rc;\n"); + c.write("}\n"); + c.write("void deallocate_" + rec_name + "(struct " + rec_name + "*v)"); + c.write("{\n"); + for(JField f : mFields) { + if (f.getType() instanceof JRecord) { + c.write(" deallocate_" + extractStructName(f.getType()) + "(&v->" + f.getName() + ");\n"); + } else if (f.getType() instanceof JVector) { + JVector vt = (JVector)f.getType(); + c.write(" deallocate_" + JVector.extractVectorName(vt.getElementType())+ "(&v->"+f.getName()+");\n"); + } else if (f.getType() instanceof JCompType) { + c.write(" deallocate_" + extractMethodSuffix(f.getType()) + "(&v->"+f.getName()+");\n"); + } + } + c.write("}\n"); + } + + private void genSerialize(FileWriter c, JType type, String tag, String name) throws IOException { + if (type instanceof JRecord) { + c.write(" rc = rc ? : serialize_" + extractStructName(type) + "(out, \"" + tag + "\", &v->" + name + ");\n"); + } else if (type instanceof JVector) { + c.write(" rc = rc ? : serialize_" + JVector.extractVectorName(((JVector)type).getElementType()) + "(out, \"" + tag + "\", &v->" + name + ");\n"); + } else { + c.write(" rc = rc ? : out->serialize_" + extractMethodSuffix(type) + "(out, \"" + tag + "\", &v->" + name + ");\n"); + } + } + + private void genDeserialize(FileWriter c, JType type, String tag, String name) throws IOException { + if (type instanceof JRecord) { + c.write(" rc = rc ? : deserialize_" + extractStructName(type) + "(in, \"" + tag + "\", &v->" + name + ");\n"); + } else if (type instanceof JVector) { + c.write(" rc = rc ? : deserialize_" + JVector.extractVectorName(((JVector)type).getElementType()) + "(in, \"" + tag + "\", &v->" + name + ");\n"); + } else { + c.write(" rc = rc ? : in->deserialize_" + extractMethodSuffix(type) + "(in, \"" + tag + "\", &v->" + name + ");\n"); + } + } + + static String extractMethodSuffix(JType t) { + if (t instanceof JRecord) { + return extractStructName(t); + } + return t.getMethodSuffix(); + } + + static private String extractStructName(JType t) { + String type = t.getCType(); + if (!type.startsWith("struct ")) return type; + return type.substring("struct ".length()); + } + public void genCppCode(FileWriter hh, FileWriter cc) throws IOException { String[] ns = getCppNameSpace().split("::"); for (int i = 0; i < ns.length; i++) { hh.write("namespace "+ns[i]+" {\n"); } - + hh.write("class "+getName()+" : public ::hadoop::Record {\n"); hh.write("private:\n"); - + for (Iterator<JField> i = mFields.iterator(); i.hasNext();) { JField jf = i.next(); hh.write(jf.genCppDecl()); @@ -295,7 +295,7 @@ cc.write(" a_.endRecord(*this,tag);\n"); cc.write(" return;\n"); cc.write("}\n"); - + cc.write("void "+getCppFQName()+"::deserialize(::hadoop::IArchive& a_, const char* tag) {\n"); cc.write(" a_.startRecord(*this,tag);\n"); fIdx = 0; @@ -312,7 +312,7 @@ cc.write(" a_.endRecord(*this,tag);\n"); cc.write(" return;\n"); cc.write("}\n"); - + cc.write("bool "+getCppFQName()+"::validate() const {\n"); cc.write(" if (bs_.size() != bs_.count()) return false;\n"); for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) { @@ -324,7 +324,7 @@ } cc.write(" return true;\n"); cc.write("}\n"); - + cc.write("bool "+getCppFQName()+"::operator< (const "+getCppFQName()+"& peer_) const {\n"); cc.write(" return (1\n"); for (Iterator<JField> i = mFields.iterator(); i.hasNext();) { @@ -334,7 +334,7 @@ } cc.write(" );\n"); cc.write("}\n"); - + cc.write("bool "+getCppFQName()+"::operator== (const "+getCppFQName()+"& peer_) const {\n"); cc.write(" return (1\n"); for (Iterator<JField> i = mFields.iterator(); i.hasNext();) { @@ -344,19 +344,19 @@ } cc.write(" );\n"); cc.write("}\n"); - + cc.write("const ::std::string&"+getCppFQName()+"::type() const {\n"); cc.write(" static const ::std::string type_(\""+mName+"\");\n"); cc.write(" return type_;\n"); cc.write("}\n"); - + cc.write("const ::std::string&"+getCppFQName()+"::signature() const {\n"); cc.write(" static const ::std::string sig_(\""+getSignature()+"\");\n"); cc.write(" return sig_;\n"); cc.write("}\n"); - + } - + public void genJavaCode(File outputDirectory) throws IOException { String pkg = getJavaPackage(); String pkgpath = pkg.replaceAll("\\.", "/"); @@ -372,6 +372,24 @@ File jfile = new File(pkgdir, getName()+".java"); FileWriter jj = new FileWriter(jfile); jj.write("// File generated by hadoop record compiler. Do not edit.\n"); + jj.write("/**\n"); + jj.write("* Licensed to the Apache Software Foundation (ASF) under one\n"); + jj.write("* or more contributor license agreements. See the NOTICE file\n"); + jj.write("* distributed with this work for additional information\n"); + jj.write("* regarding copyright ownership. The ASF licenses this file\n"); + jj.write("* to you under the Apache License, Version 2.0 (the\n"); + jj.write("* \"License\"); you may not use this file except in compliance\n"); + jj.write("* with the License. You may obtain a copy of the License at\n"); + jj.write("*\n"); + jj.write("* http://www.apache.org/licenses/LICENSE-2.0\n"); + jj.write("*\n"); + jj.write("* Unless required by applicable law or agreed to in writing, software\n"); + jj.write("* distributed under the License is distributed on an \"AS IS\" BASIS,\n"); + jj.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"); + jj.write("* See the License for the specific language governing permissions and\n"); + jj.write("* limitations under the License.\n"); + jj.write("*/\n"); + jj.write("\n"); jj.write("package "+getJavaPackage()+";\n\n"); jj.write("import java.util.*;\n"); jj.write("import org.apache.jute.*;\n"); @@ -382,7 +400,7 @@ } jj.write(" public "+getName()+"() {\n"); jj.write(" }\n"); - + jj.write(" public "+getName()+"(\n"); int fIdx = 0; int fLen = mFields.size(); @@ -412,7 +430,7 @@ } jj.write(" a_.endRecord(this,tag);\n"); jj.write(" }\n"); - + jj.write(" public void deserialize(InputArchive a_, String tag) throws java.io.IOException {\n"); jj.write(" a_.startRecord(tag);\n"); fIdx = 0; @@ -422,7 +440,7 @@ } jj.write(" a_.endRecord(tag);\n"); jj.write("}\n"); - + jj.write(" public String toString() {\n"); jj.write(" try {\n"); jj.write(" java.io.ByteArrayOutputStream s =\n"); @@ -442,21 +460,21 @@ jj.write(" }\n"); jj.write(" return \"ERROR\";\n"); jj.write(" }\n"); - + jj.write(" public void write(java.io.DataOutput out) throws java.io.IOException {\n"); jj.write(" BinaryOutputArchive archive = new BinaryOutputArchive(out);\n"); jj.write(" serialize(archive, \"\");\n"); jj.write(" }\n"); - + jj.write(" public void readFields(java.io.DataInput in) throws java.io.IOException {\n"); jj.write(" BinaryInputArchive archive = new BinaryInputArchive(in);\n"); jj.write(" deserialize(archive, \"\");\n"); jj.write(" }\n"); - + jj.write(" public int compareTo (Object peer_) throws ClassCastException {\n"); boolean unimplemented = false; for (JField f : mFields) { - if ((f.getType() instanceof JMap) + if ((f.getType() instanceof JMap) || (f.getType() instanceof JVector)) { unimplemented = true; @@ -479,7 +497,7 @@ jj.write(" return ret;\n"); } jj.write(" }\n"); - + jj.write(" public boolean equals(Object peer_) {\n"); jj.write(" if (!(peer_ instanceof "+getName()+")) {\n"); jj.write(" return false;\n"); @@ -496,7 +514,7 @@ } jj.write(" return ret;\n"); jj.write(" }\n"); - + jj.write(" public int hashCode() {\n"); jj.write(" int result = 17;\n"); jj.write(" int ret;\n"); @@ -510,9 +528,9 @@ jj.write(" public static String signature() {\n"); jj.write(" return \""+getSignature()+"\";\n"); jj.write(" }\n"); - + jj.write("}\n"); - + jj.close(); } } Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/generated/package.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/generated/package.html?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/generated/package.html (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/generated/package.html Thu Jan 21 21:44:21 2010 @@ -1,4 +1,20 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. +--> <html> <head> Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/package.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/package.html?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/package.html (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/jute/compiler/package.html Thu Jan 21 21:44:21 2010 @@ -1,4 +1,20 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. +--> <html> <head> Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/jute/package.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/jute/package.html?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/jute/package.html (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/jute/package.html Thu Jan 21 21:44:21 2010 @@ -1,4 +1,20 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. +--> <html> <head> Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/package.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/package.html?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/package.html (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/package.html Thu Jan 21 21:44:21 2010 @@ -1,3 +1,20 @@ +<!-- + 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. +--> + <html> <body> <h1>ZooKeeper server theory of operation</h1> Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/version/util/VerGen.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/version/util/VerGen.java?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/version/util/VerGen.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/version/util/VerGen.java Thu Jan 21 21:44:21 2010 @@ -54,6 +54,24 @@ w = new FileWriter(file); w.write("// Do not edit!\n// File generated by org.apache.zookeeper" + ".version.util.VerGen.\n"); + w.write("/**\n"); + w.write("* Licensed to the Apache Software Foundation (ASF) under one\n"); + w.write("* or more contributor license agreements. See the NOTICE file\n"); + w.write("* distributed with this work for additional information\n"); + w.write("* regarding copyright ownership. The ASF licenses this file\n"); + w.write("* to you under the Apache License, Version 2.0 (the\n"); + w.write("* \"License\"); you may not use this file except in compliance\n"); + w.write("* with the License. You may obtain a copy of the License at\n"); + w.write("*\n"); + w.write("* http://www.apache.org/licenses/LICENSE-2.0\n"); + w.write("*\n"); + w.write("* Unless required by applicable law or agreed to in writing, software\n"); + w.write("* distributed under the License is distributed on an \"AS IS\" BASIS,\n"); + w.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"); + w.write("* See the License for the specific language governing permissions and\n"); + w.write("* limitations under the License.\n"); + w.write("*/\n"); + w.write("\n"); w.write("package " + PACKAGE_NAME + ";\n\n"); w.write("public interface " + TYPE_NAME + " {\n"); w.write(" public static final int MAJOR=" + maj + ";\n"); Modified: hadoop/zookeeper/trunk/src/java/main/overview.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/overview.html?rev=901869&r1=901868&r2=901869&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/overview.html (original) +++ hadoop/zookeeper/trunk/src/java/main/overview.html Thu Jan 21 21:44:21 2010 @@ -1,4 +1,21 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. +--> + <html> <head> <title>ZooKeeper</title>