/* * 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.jackrabbit.standalone.cli.info; import java.io.PrintWriter; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.Property; import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; import javax.jcr.Value; import org.apache.commons.chain.Command; import org.apache.commons.chain.Context; import org.apache.jackrabbit.standalone.cli.CommandHelper; /** * Dump stored data from the current working <code>Node</code> */ public class Dump implements Command { /** root node to dump */ private String pathKey = "path"; /** * {@inheritDoc} */ public boolean execute(Context ctx) throws Exception { String path = (String) ctx.get(this.pathKey); PrintWriter out = CommandHelper.getOutput(ctx); dump(out, CommandHelper.getNode(ctx, path)); return false; } /** * Dumps the given <code>Node</code> to the given <code>PrintWriter</code> * @param out * the <code>PrintWriter</code> * @param n * the <code>Node</code> * @throws RepositoryException */ public void dump(PrintWriter out, Node n) throws RepositoryException { out.println(n.getPath()); PropertyIterator pit = n.getProperties(); while (pit.hasNext()) { Property p = pit.nextProperty(); out.print(p.getPath() + "="); if (p.getDefinition().isMultiple()) { Value[] values = p.getValues(); for (int i = 0; i < values.length; i++) { if (i > 0) out.println(","); out.println(values[i].getString()); } } else { out.print(p.getString()); } out.println(); } NodeIterator nit = n.getNodes(); while (nit.hasNext()) { Node cn = nit.nextNode(); dump(out, cn); } } /** * @return the path key */ public String getPathKey() { return pathKey; } /** * @param pathKey * the path key to set */ public void setPathKey(String pathKey) { this.pathKey = pathKey; } }