karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ioannis Canellos <ioca...@gmail.com>
Subject Re: svn commit: r1044051 - in /karaf/trunk/shell/commands/src/main: java/org/apache/karaf/shell/commands/ resources/META-INF/services/org/apache/karaf/shell/ resources/OSGI-INF/blueprint/
Date Thu, 09 Dec 2010 22:44:13 GMT
OK I will reopen the issue.

On Fri, Dec 10, 2010 at 12:36 AM, Guillaume Nodet <gnodet@gmail.com> wrote:

> I haven't yet tried the tail command, from looking at it, I think it
> will fail to behave correctly in a number of cases.
> The first one would be with a huge file, as keeping all the lines in
> memory will certainly be a problem.
> Also i'd love to see the -f option being implemented ...
>
> On Thu, Dec 9, 2010 at 18:48,  <iocanel@apache.org> wrote:
> > Author: iocanel
> > Date: Thu Dec  9 17:48:16 2010
> > New Revision: 1044051
> >
> > URL: http://svn.apache.org/viewvc?rev=1044051&view=rev
> > Log:
> > [KARAF-316] Added simple implementations of head and tail commands.
> >
> > Added:
> >
>  karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/HeadAction.java
> >
>  karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/TailAction.java
> > Modified:
> >
>  karaf/trunk/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands
> >
>  karaf/trunk/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
> >
> > Added:
> karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/HeadAction.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/HeadAction.java?rev=1044051&view=auto
> >
> ==============================================================================
> > ---
> karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/HeadAction.java
> (added)
> > +++
> karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/HeadAction.java
> Thu Dec  9 17:48:16 2010
> > @@ -0,0 +1,101 @@
> > +/*
> > + * 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.karaf.shell.commands;
> > +
> > +import java.io.BufferedReader;
> > +import java.io.File;
> > +import java.io.FileReader;
> > +import java.io.IOException;
> > +import java.io.InputStreamReader;
> > +import java.net.MalformedURLException;
> > +import java.net.URL;
> > +import java.util.List;
> > +
> > +import org.apache.felix.gogo.commands.Argument;
> > +import org.apache.felix.gogo.commands.Command;
> > +import org.apache.felix.gogo.commands.Option;
> > +import org.apache.karaf.shell.console.AbstractAction;
> > +
> > +@Command(scope = "shell", name = "head", description = "Displays the
> first lines of a file.")
> > +public class HeadAction extends AbstractAction {
> > +
> > +    private static final int DEFAULT_NUMBER_OF_LINES = 10;
> > +
> > +    @Option(name = "-n", aliases = {}, description = "The number of
> lines to display, starting at 1.", required = false, multiValued = false)
> > +    private int numberOfLines;
> > +
> > +    @Argument(index = 0, name = "paths or urls", description = "A list
> of file paths or urls to display separated by whitespaces.", required =
> false, multiValued = true)
> > +    private List<String> paths;
> > +
> > +    protected Object doExecute() throws Exception {
> > +        //If no paths provided assume standar input
> > +        if (paths == null || paths.size() == 0) {
> > +            if (log.isDebugEnabled()) {
> > +                log.debug("Heading STDIN");
> > +            }
> > +
> > +            head(new BufferedReader(new InputStreamReader(System.in)));
> > +        } else {
> > +            for (String filename : paths) {
> > +                BufferedReader reader;
> > +
> > +                // First try a URL
> > +                try {
> > +                    URL url = new URL(filename);
> > +                    if (log.isDebugEnabled()) {
> > +                        log.debug("Heading URL: " + url);
> > +                    }
> > +                    reader = new BufferedReader(new
> InputStreamReader(url.openStream()));
> > +                }
> > +                catch (MalformedURLException ignore) {
> > +                    // They try a file
> > +                    File file = new File(filename);
> > +                    if (log.isDebugEnabled()) {
> > +                        log.debug("Heading file: " + file);
> > +                    }
> > +                    reader = new BufferedReader(new FileReader(file));
> > +                }
> > +
> > +                try {
> > +                    head(reader);
> > +                }
> > +                finally {
> > +                    try {
> > +                        reader.close();
> > +                    } catch (IOException e) {
> > +                        // Ignore
> > +                    }
> > +                }
> > +            }
> > +        }
> > +        return null;
> > +    }
> > +
> > +    private void head(final BufferedReader reader) throws IOException {
> > +        String line;
> > +        int lineno = 1;
> > +
> > +        if (numberOfLines < 1) {
> > +            numberOfLines = DEFAULT_NUMBER_OF_LINES;
> > +        }
> > +
> > +        while ((line = reader.readLine()) != null && lineno <=
> numberOfLines) {
> > +            System.out.println(line);
> > +            lineno++;
> > +        }
> > +    }
> > +}
> >
> > Added:
> karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/TailAction.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/TailAction.java?rev=1044051&view=auto
> >
> ==============================================================================
> > ---
> karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/TailAction.java
> (added)
> > +++
> karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/TailAction.java
> Thu Dec  9 17:48:16 2010
> > @@ -0,0 +1,108 @@
> > +/*
> > + * 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.karaf.shell.commands;
> > +
> > +import java.io.BufferedReader;
> > +import java.io.File;
> > +import java.io.FileReader;
> > +import java.io.IOException;
> > +import java.io.InputStreamReader;
> > +import java.net.MalformedURLException;
> > +import java.net.URL;
> > +import java.util.LinkedList;
> > +import java.util.List;
> > +
> > +import org.apache.felix.gogo.commands.Argument;
> > +import org.apache.felix.gogo.commands.Command;
> > +import org.apache.felix.gogo.commands.Option;
> > +import org.apache.karaf.shell.console.AbstractAction;
> > +
> > +@Command(scope = "shell", name = "tail", description = "Displays the
> last lines of a file")
> > +public class TailAction extends AbstractAction {
> > +
> > +    private static final int DEFAULT_NUMBER_OF_LINES = 10;
> > +
> > +    @Option(name = "-n", aliases = {}, description = "The number of
> lines to display, starting at 1.", required = false, multiValued = false)
> > +    private int numberOfLines;
> > +
> > +    @Argument(index = 0, name = "paths or urls", description = "A list
> of file paths or urls to display separated by whitespaces.", required =
> false, multiValued = true)
> > +    private List<String> paths;
> > +
> > +    protected Object doExecute() throws Exception {
> > +        //If no paths provided assume standar input
> > +        if (paths == null || paths.size() == 0) {
> > +            if (log.isDebugEnabled()) {
> > +                log.debug("Tailing STDIN");
> > +            }
> > +            tail(new BufferedReader(new InputStreamReader(System.in)));
> > +        } else {
> > +            for (String filename : paths) {
> > +                BufferedReader reader;
> > +
> > +                // First try a URL
> > +                try {
> > +                    URL url = new URL(filename);
> > +                    if (log.isDebugEnabled()) {
> > +                        log.debug("Tailing URL: " + url);
> > +                    }
> > +                    reader = new BufferedReader(new
> InputStreamReader(url.openStream()));
> > +                }
> > +                catch (MalformedURLException ignore) {
> > +                    // They try a file
> > +                    File file = new File(filename);
> > +                    if (log.isDebugEnabled()) {
> > +                        log.debug("Tailing file: " + file);
> > +                    }
> > +                    reader = new BufferedReader(new FileReader(file));
> > +                }
> > +
> > +                try {
> > +                    tail(reader);
> > +                }
> > +                finally {
> > +                    try {
> > +                        reader.close();
> > +                    } catch (IOException e) {
> > +                        // Ignore
> > +                    }
> > +                }
> > +            }
> > +        }
> > +
> > +        return null;
> > +    }
> > +
> > +    private void tail(final BufferedReader reader) throws IOException {
> > +        List<String> lines = new LinkedList<String>();
> > +        String line;
> > +        int lineno = 1;
> > +
> > +        while ((line = reader.readLine()) != null) {
> > +            lines.add(line);
> > +        }
> > +
> > +        if (numberOfLines < 1) {
> > +            numberOfLines = DEFAULT_NUMBER_OF_LINES;
> > +        }
> > +
> > +        int startLine = lines.size() < numberOfLines ? 0 : lines.size()
> - numberOfLines;
> > +
> > +        for (lineno = startLine; lineno < lines.size(); lineno++) {
> > +            System.out.println(lines.get(lineno));
> > +        }
> > +    }
> > +}
> >
> > Modified:
> karaf/trunk/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands?rev=1044051&r1=1044050&r2=1044051&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands
> (original)
> > +++
> karaf/trunk/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands
> Thu Dec  9 17:48:16 2010
> > @@ -21,6 +21,7 @@ org.apache.karaf.shell.commands.EchoActi
> >  org.apache.karaf.shell.commands.ExecuteAction
> >  org.apache.karaf.shell.commands.GrepAction
> >  org.apache.karaf.shell.commands.HistoryAction
> > +org.apache.karaf.shell.commands.HeadAction
> >  org.apache.karaf.shell.commands.IfAction
> >  org.apache.karaf.shell.commands.JavaAction
> >  org.apache.karaf.shell.commands.LogoutAction
> > @@ -30,3 +31,4 @@ org.apache.karaf.shell.commands.PrintfAc
> >  org.apache.karaf.shell.commands.SleepAction
> >  org.apache.karaf.shell.commands.SortAction
> >  org.apache.karaf.shell.commands.TacAction
> > +org.apache.karaf.shell.commands.TailAction
> >
> > Modified:
> karaf/trunk/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml?rev=1044051&r1=1044050&r2=1044051&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
> (original)
> > +++
> karaf/trunk/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
> Thu Dec  9 17:48:16 2010
> > @@ -41,6 +41,9 @@
> >         <command name="shell/history">
> >             <action
> class="org.apache.karaf.shell.commands.HistoryAction"/>
> >         </command>
> > +        <command name="shell/head">
> > +            <action class="org.apache.karaf.shell.commands.HeadAction"/>
> > +        </command>
> >         <command name="shell/if">
> >             <action class="org.apache.karaf.shell.commands.IfAction"/>
> >         </command>
> > @@ -78,6 +81,9 @@
> >         <command name="shell/tac">
> >             <action class="org.apache.karaf.shell.commands.TacAction"/>
> >         </command>
> > +        <command name="shell/tail">
> > +            <action class="org.apache.karaf.shell.commands.TailAction"/>
> > +        </command>
> >     </command-bundle>
> >
> >    <bean class="org.osgi.util.tracker.BundleTracker" init-method="open"
> >
> >
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>



-- 
*Ioannis Canellos*
http://iocanel.blogspot.com

Integration Engineer @ Upstream S.A. <http://www.upstreamsystems.com>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message