You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-commits@incubator.apache.org by ma...@apache.org on 2006/07/24 16:58:51 UTC

svn commit: r425117 [12/14] - in /incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript: ./ javascript20parser/ javascriptcompiler/ obfuscator/ obfuscato...

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/InputSource.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/InputSource.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/InputSource.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/InputSource.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator;
+
+import java.io.InputStream;
+
+
+public class InputSource
+{
+  private boolean _skipObfuscation;
+  private boolean _skipStripComments;
+  private boolean _skipStripWhitespaces;
+  private boolean _skipStripNewlines;
+  private boolean _skipStripSpecialKeywords;
+  private InputStream _in;
+
+  public InputSource(InputStream in, boolean skipObfuscation,
+    boolean skipStripComments, boolean skipStripWhitespaces,
+    boolean skipStripNewlines, boolean skipStripSpecialKeywords)
+  {
+    _in = in;
+    _skipObfuscation = skipObfuscation;
+    _skipStripComments = skipStripComments;
+    _skipStripWhitespaces = skipStripWhitespaces;
+    _skipStripNewlines = skipStripNewlines;
+    _skipStripSpecialKeywords = skipStripSpecialKeywords;
+  }
+
+  public InputStream getInputStream()
+  {
+    return _in;
+  }
+
+  public boolean skipObfuscation()
+  {
+    return _skipObfuscation;
+  }
+
+  public boolean skipStripComments()
+  {
+    return _skipStripComments;
+  }
+
+  public boolean skipStripWhitespaces()
+  {
+    return _skipStripWhitespaces;
+  }
+
+  public boolean skipStripNewlines()
+  {
+    return _skipStripNewlines;
+  }
+
+  public boolean skipStripSpecialKeywords()
+  {
+    return _skipStripSpecialKeywords;
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/InputSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/InputSource.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/Obfuscator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/Obfuscator.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/Obfuscator.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/Obfuscator.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,196 @@
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator;
+
+//~--- non-JDK imports --------------------------------------------------------
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.configuration.ConfigException;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.configuration.ObfuscatorConfig;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.ObfuscatorFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.compression.CompressionFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.keywords.SpecialKeywordsFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.ObfuscationFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.output.OutputGenerator;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.JSParser15;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ParseException;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.uixtools.FileProcessor;
+
+//~--- JDK imports ------------------------------------------------------------
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+import org.apache.commons.io.FileUtils;
+
+//~--- classes ----------------------------------------------------------------
+
+public class Obfuscator
+  extends FileProcessor
+{
+  private Vector _filters = new Vector();
+
+  private ObfuscatorFilter _keywordsFilter = new SpecialKeywordsFilter();
+
+  private ObfuscationFilter _obfuscationFilter = new ObfuscationFilter();
+
+  private OutputGenerator _outputGenerator = new OutputGenerator();
+
+  private ObfuscatorConfig _config;
+
+  private JSParser15 _jsParser;
+
+  private boolean _obfuscate;
+
+  private boolean _replaceCharLiterals;
+
+  private boolean _stripComments;
+
+  private boolean _stripNewlines;
+
+  private boolean _stripSpecialKeywords;
+
+  private boolean _stripWhitespaces;
+
+  //~--- constructors -------------------------------------------------------
+
+  public Obfuscator(boolean obfuscate, boolean stripComments,
+                    boolean stripWhitespaces, boolean stripNewlines,
+                    boolean stripSpecialKeywords,
+                    boolean replaceCharLiterals, ObfuscatorConfig config)
+    throws ConfigException
+  {
+    super("js", false);
+    _obfuscate = obfuscate;
+    _stripComments = stripComments;
+    _stripWhitespaces = stripWhitespaces;
+    _stripNewlines = stripNewlines;
+    _stripSpecialKeywords = stripSpecialKeywords;
+    _replaceCharLiterals = replaceCharLiterals;
+    _config = config;
+  }
+
+  //~--- methods ------------------------------------------------------------
+
+  private void init(InputSource in)
+  {
+
+    // apply overrides
+    boolean obfuscate = in.skipObfuscation()? false: _obfuscate;
+    boolean stripComments = in.skipStripComments()? false: _stripComments;
+    boolean stripWhitespaces =
+      in.skipStripWhitespaces()? false: _stripWhitespaces;
+    boolean stripNewLines = in.skipStripNewlines()? false: _stripNewlines;
+    boolean stripSpecialKeywords =
+      in.skipStripSpecialKeywords()? false: _stripSpecialKeywords;
+
+    // setup filters
+    _filters.clear();
+
+    if (stripSpecialKeywords)
+    {
+      _filters.add(_keywordsFilter);
+    }
+
+    if (stripWhitespaces || stripNewLines || stripComments)
+    {
+      _filters
+      .add(new CompressionFilter(stripComments, stripWhitespaces, stripNewLines));
+    }
+
+    if (obfuscate)
+    {
+      _filters.add(_obfuscationFilter);
+    }
+
+    // make output generator the last filter
+    _filters.add(_outputGenerator);
+  }
+
+  private void initParser(InputStream in)
+  {
+    if (_jsParser == null)
+    {
+      _jsParser = new JSParser15(in);
+    }
+    else
+    {
+      _jsParser.ReInit(in);
+    }
+  }
+
+  public void process(InputSource in, OutputStream out)
+    throws ParseException
+  {
+    init(in);
+    _outputGenerator.setOutputStream(out);
+
+    AnnotatedToken token = tokenize(in.getInputStream());
+
+    for (Iterator itr = _filters.iterator(); itr.hasNext(); )
+    {
+      ObfuscatorFilter filter = (ObfuscatorFilter) itr.next();
+
+      token = filter.filter(token);
+    }
+  }
+
+  protected void processFile(File in, File out)
+    throws Exception
+  {
+    if (_obfuscate == true)
+    {
+      FileInputStream inStream = new FileInputStream(in);
+      FileOutputStream outStream = new FileOutputStream(out);
+      String fileName = in.getName();
+      InputSource inpSource =
+        new InputSource(inStream,
+                          _config.skipObfuscation(fileName),
+                          _config.skipStripComments(fileName),
+                          _config.skipStripWhitespaces(fileName),
+                          _config.skipStripNewlines(fileName),
+                          _config.skipStripSpecialKeywords(fileName));
+
+      process(inpSource, outStream);
+      inStream.close();
+      outStream.close();
+    }
+    else
+    {
+      // Just copy the files over.
+      FileUtils.touch(out);
+      FileUtils.copyFile(in,out);
+    }
+  }
+
+  private AnnotatedToken tokenize(InputStream in)
+    throws ParseException
+  {
+    initParser(in);
+
+    return (AnnotatedToken) _jsParser.Program();
+  }
+}
+

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/Obfuscator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/Obfuscator.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ConfigException.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ConfigException.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ConfigException.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ConfigException.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.configuration;
+
+public class ConfigException extends Exception
+{
+  public ConfigException()
+  {
+  }
+
+  public ConfigException(Throwable t)
+  {
+    super(t);
+  }
+
+  public ConfigException(String msg)
+  {
+    super(msg);
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ConfigException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ConfigException.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ObfuscatorConfig.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ObfuscatorConfig.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ObfuscatorConfig.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ObfuscatorConfig.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.configuration;
+
+import java.util.Vector;
+
+public class ObfuscatorConfig
+{
+  private Vector _obfExclusions = new Vector();
+  private Vector _commentsExclusions = new Vector();
+  private Vector _wsExclusions = new Vector();
+  private Vector _nlExclusions = new Vector();
+  private Vector _keywordExclusions = new Vector();
+
+  public ObfuscatorConfig() throws ConfigException
+  {
+  }
+
+  public boolean skipObfuscation(String file)
+  {
+    return _obfExclusions.contains(file);
+  }
+
+  public boolean skipStripComments(String file)
+  {
+    return _commentsExclusions.contains(file);
+  }
+
+  public boolean skipStripWhitespaces(String file)
+  {
+    return _wsExclusions.contains(file);
+  }
+
+  public boolean skipStripNewlines(String file)
+  {
+    return _nlExclusions.contains(file);
+  }
+
+  public boolean skipStripSpecialKeywords(String file)
+  {
+    return _keywordExclusions.contains(file);
+  }
+
+  private void init() throws ConfigException
+  {
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ObfuscatorConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/ObfuscatorConfig.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/config.xml
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/config.xml?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/config.xml (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/config.xml Mon Jul 24 09:58:43 2006
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="windows-1252" ?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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.
+-->
+<obfuscator>
+  <input>
+    <exclusions>
+      <obfuscation>
+      </obfuscation>
+      <comments>
+      </comments>
+      <whitespaces>
+      </whitespaces>
+      <newlines>
+      </newlines>
+      <specialkeywords>
+        <file>Assert.js</file>
+        <file>Logger.js</file>      
+      </specialkeywords>
+    </exclusions>
+  </input>
+</obfuscator>
\ No newline at end of file

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/configuration/config.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/ObfuscatorFilter.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/ObfuscatorFilter.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/ObfuscatorFilter.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/ObfuscatorFilter.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+
+public interface ObfuscatorFilter
+{
+  AnnotatedToken filter(AnnotatedToken startToken);
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/ObfuscatorFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/ObfuscatorFilter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CommentsHandler.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CommentsHandler.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CommentsHandler.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CommentsHandler.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.compression;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+
+public class CommentsHandler implements CompressionHandler
+{
+  public CommentsHandler()
+  {
+  }
+
+  public void handle(AnnotatedToken token, AnnotatedToken prevToken)
+  {
+    AnnotatedToken specialToken = token.getSpecialToken();
+    AnnotatedToken prevSpecialToken = token;
+
+    while (specialToken != null)
+    {
+      // remove single line and multiline comments
+      if (specialToken.isComment())
+      {
+        prevSpecialToken.specialToken = specialToken.specialToken;
+        specialToken = specialToken.getSpecialToken();
+      }
+      else
+      {
+        prevSpecialToken = specialToken;
+        specialToken = specialToken.getSpecialToken();
+      }
+    }
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CommentsHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CommentsHandler.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionFilter.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionFilter.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionFilter.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionFilter.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.compression;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.ObfuscatorFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+
+public class CompressionFilter implements ObfuscatorFilter
+{
+  private boolean _stripComments;
+  private boolean _stripWhitespaces;
+  private boolean _stripNewlines;
+  private Vector _handlers = new Vector();
+
+  public CompressionFilter(boolean stripComments, boolean stripWhitespaces,
+    boolean stripNewlines)
+  {
+    _stripComments = stripComments;
+    _stripWhitespaces = stripWhitespaces;
+    _stripNewlines = stripNewlines;
+
+    // create a set of handlers based on supplied options
+    init();
+  }
+
+  public AnnotatedToken filter(AnnotatedToken startToken)
+  {
+    AnnotatedToken token = startToken;
+    AnnotatedToken prevToken = null;
+
+    while (token != null)
+    {
+      // hand off to handlers
+      // todo: inline these if this is too expensive
+      for (Iterator itr = _handlers.iterator(); itr.hasNext();)
+      {
+        CompressionHandler handler = (CompressionHandler) itr.next();
+        handler.handle(token, prevToken);
+      }
+
+      prevToken = token;
+      token = token.getNext();
+    }
+
+    return startToken;
+  }
+
+  private void init()
+  {
+    if (_stripComments)
+    {
+      _handlers.add(new CommentsHandler());
+    }
+
+    if (_stripWhitespaces)
+    {
+      _handlers.add(new WhitespaceHandler());
+    }
+
+    if (_stripNewlines)
+    {
+      _handlers.add(new NewlineHandler());
+    }
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionFilter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionHandler.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionHandler.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionHandler.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionHandler.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.compression;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+
+public interface CompressionHandler
+{
+  void handle(AnnotatedToken token, AnnotatedToken prevToken);
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/CompressionHandler.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/NewlineHandler.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/NewlineHandler.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/NewlineHandler.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/NewlineHandler.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.compression;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+
+public class NewlineHandler implements CompressionHandler
+{
+  public NewlineHandler()
+  {
+  }
+
+  public void handle(AnnotatedToken token, AnnotatedToken prevToken)
+  {
+    AnnotatedToken specialToken = token.getSpecialToken();
+    AnnotatedToken prevSpecialToken = token;
+    boolean skipOne = (prevToken == null) ? false : true;
+
+    while (specialToken != null)
+    {
+      if (specialToken.isNewLine())
+      {
+        if (skipOne)
+        {
+          skipOne = false;
+          specialToken.image = "\r\n";
+          prevSpecialToken = specialToken;
+          specialToken = specialToken.getSpecialToken();
+        }
+        else
+        {
+          prevSpecialToken.specialToken = specialToken.specialToken;
+          specialToken = specialToken.getSpecialToken();
+        }
+      }
+      else
+      {
+        prevSpecialToken = specialToken;
+        specialToken = specialToken.getSpecialToken();
+      }
+    }
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/NewlineHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/NewlineHandler.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/WhitespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/WhitespaceHandler.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/WhitespaceHandler.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/WhitespaceHandler.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.compression;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+
+public class WhitespaceHandler implements CompressionHandler
+{
+  public WhitespaceHandler()
+  {
+  }
+
+  public void handle(AnnotatedToken token, AnnotatedToken prevToken)
+  {
+    AnnotatedToken specialToken = token.getSpecialToken();
+    AnnotatedToken prevSpecialToken = token;
+    boolean skipOne = (prevToken == null) ? false
+                                          : (prevToken.isWSSensitive() ||
+      token.isInfixWSSensitive());
+
+    while (specialToken != null)
+    {
+      // remove whitespace. Keep one if the token is whitespace sensitive
+      if (specialToken.isWhiteSpace())
+      {
+        if (skipOne)
+        {
+          skipOne = false;
+          specialToken.image = " ";
+          prevSpecialToken = specialToken;
+          specialToken = specialToken.getSpecialToken();
+        }
+        else
+        {
+          prevSpecialToken.specialToken = specialToken.specialToken;
+          specialToken = specialToken.getSpecialToken();
+        }
+      }
+      else
+      {
+        prevSpecialToken = specialToken;
+        specialToken = specialToken.getSpecialToken();
+      }
+    }
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/WhitespaceHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/compression/WhitespaceHandler.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/keywords/SpecialKeywordsFilter.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/keywords/SpecialKeywordsFilter.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/keywords/SpecialKeywordsFilter.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/keywords/SpecialKeywordsFilter.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.keywords;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.ObfuscatorFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+
+
+public class SpecialKeywordsFilter implements ObfuscatorFilter
+{
+  public SpecialKeywordsFilter()
+  {
+  }
+
+  public AnnotatedToken filter(AnnotatedToken startToken)
+  {
+    AnnotatedToken token = startToken;
+    token = removeSpecialTypes(token);
+
+    return token;
+  }
+
+  protected void removeSpecialTokens(AnnotatedToken token)
+  {
+    AnnotatedToken specialToken = token.getSpecialToken();
+    AnnotatedToken prevSpecialToken = token;
+
+    while (specialToken != null)
+    {
+      if (specialToken.isRemovableKeyword())
+      {
+        prevSpecialToken.specialToken = specialToken.specialToken;
+        specialToken = specialToken.getSpecialToken();
+      }
+      else
+      {
+        prevSpecialToken = specialToken;
+        specialToken = specialToken.getSpecialToken();
+      }
+    }
+  }
+
+  /**
+   * The main loop removes special types (like Profiler, and CheckPoint) and
+   * all method invocations using variables of these types. The main
+   * loop calls removeSpecialTokens which removes special keywords like Assert
+   * and Logger, which were tagged by the parser as SpecialTokens
+   * @param startToken
+   * @return
+   */
+  protected AnnotatedToken removeSpecialTypes(AnnotatedToken startToken)
+  {
+    AnnotatedToken token = startToken;
+    AnnotatedToken prevToken = null;
+    AnnotatedToken newStartToken = null;
+
+    while (token != null)
+    {
+      if (token.canRemove())
+      {
+        if (prevToken != null)
+        {
+          prevToken.next = token.getNext();
+        }
+
+        token = token.getNext();
+      }
+      else
+      {
+        removeSpecialTokens(token);
+
+        if (newStartToken == null)
+        {
+          newStartToken = token;
+        }
+
+        prevToken = token;
+        token = token.getNext();
+      }
+    }
+
+    return newStartToken;
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/keywords/SpecialKeywordsFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/keywords/SpecialKeywordsFilter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/ObfuscationFilter.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/ObfuscationFilter.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/ObfuscationFilter.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/ObfuscationFilter.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.ObfuscatorFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.state.RootState;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContextStack;
+
+
+public class ObfuscationFilter implements ObfuscatorFilter
+{
+  public ObfuscationFilter()
+  {
+  }
+
+  public AnnotatedToken filter(AnnotatedToken startToken)
+  {
+    if (startToken != null)
+    {
+      // transition to root state
+      ProgramContextStack programContextStack = new ProgramContextStack();
+      RootState.getInstance().enterState(programContextStack, startToken, null);
+    }
+
+    return startToken;
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/ObfuscationFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/ObfuscationFilter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionContext.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionContext.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionContext.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionContext.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.state;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.NameGen;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContext;
+
+
+public class FunctionContext extends ProgramContext {
+    private boolean _obfuscateLocalVars;
+
+    public FunctionContext(String name, boolean obfuscateLocalVars) {
+        super(name);
+        _obfuscateLocalVars = obfuscateLocalVars;
+    }
+
+    public FunctionContext(String name, NameGen nameGen, boolean usesEval) {
+        super(name, nameGen);
+        _obfuscateLocalVars = usesEval;
+    }
+
+    public void setObfuscateLocalVars(boolean obfuscateLocalVars) {
+        _obfuscateLocalVars = obfuscateLocalVars;
+    }
+
+    public boolean canObfuscateLocalVars() {
+        return _obfuscateLocalVars;
+    }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionContext.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionState.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionState.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionState.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionState.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.state;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotationConstants;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.JSParser15Constants;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.NameGen;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContext;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContextStack;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+
+public class FunctionState extends ObfuscationState
+{
+  static private FunctionState _instance;
+
+  // private construnctor for singleton
+  private FunctionState()
+  {
+  }
+
+  static public FunctionState getInstance()
+  {
+    if (_instance == null)
+    {
+      synchronized (FunctionState.class)
+      {
+        if (_instance == null)
+        {
+          _instance = new FunctionState();
+        }
+      }
+    }
+
+    return _instance;
+  }
+
+  public AnnotatedToken enterState(ProgramContextStack contextStack,
+    AnnotatedToken startToken, NameGen nameGen)
+  {
+    FunctionContext functionContext;
+    AnnotatedToken token = startToken;
+    String contextName = "AnonymousFunction";
+    Vector params = (Vector) token.getAnnotationObject();
+    boolean obfuscateLocalVars = !token.functionUsesEval();
+
+    if (token.getKind() == AnnotationConstants.NAMED_FUNCTION)
+    {
+      // grab the function name
+      token = token.getNext();
+      contextName = token.image;
+      functionContext = new FunctionContext(contextName, obfuscateLocalVars);
+    }
+    else
+    {
+      // reuse the symbol name generator for anonymous functions
+      functionContext = new FunctionContext(contextName, nameGen,
+          obfuscateLocalVars);
+    }
+
+    if (obfuscateLocalVars)
+    {
+      obfuscateFunctionParams(params, functionContext);
+    }
+
+    while (token.kind != JSParser15Constants.LBRACE)
+    {
+      token = token.getNext();
+    }
+
+    token = token.getNext();
+    contextStack.pushContext(functionContext);
+
+    return processCodeBlock(contextStack, token);
+  }
+
+  private void obfuscateFunctionParams(Vector params,
+    ProgramContext functionContext)
+  {
+    for (Iterator itr = params.iterator(); itr.hasNext();)
+    {
+      AnnotatedToken paramToken = (AnnotatedToken) itr.next();
+      functionContext.addToken(paramToken.image, paramToken);
+      paramToken.image = functionContext.generateSymbolName();
+    }
+  }
+
+  public void exitState(ProgramContextStack contextStack)
+  {
+    contextStack.popContext();
+  }
+
+  protected void processVarIdentifier(ProgramContextStack contextStack,
+    AnnotatedToken token)
+  {
+    FunctionContext functionContext = (FunctionContext) contextStack.peek();
+
+    // normal processing for functions that do not use eval() calls
+    if (functionContext.canObfuscateLocalVars())
+    {
+      super.processVarIdentifier(contextStack, token);
+    }
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionState.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/FunctionState.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/ObfuscationState.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/ObfuscationState.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/ObfuscationState.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/ObfuscationState.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.state;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotationConstants;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.JSParser15Constants;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.NameGen;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContext;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContextStack;
+
+
+public abstract class ObfuscationState
+{
+  public abstract AnnotatedToken enterState(ProgramContextStack contextStack,
+    AnnotatedToken startToken, NameGen nameGen);
+
+  public abstract void exitState(ProgramContextStack contextStack);
+
+  /**
+  * Obfuscates variable declarations
+  * @param contextStack
+  * @param token
+  */
+  protected void processVarIdentifier(ProgramContextStack contextStack,
+    AnnotatedToken token)
+  {
+    ProgramContext blockContext = (ProgramContext) contextStack.peek();
+
+    // skip global vars
+    if (contextStack.size() > 1)
+    {
+      // add only if we have not seen this variable before in this context.
+      AnnotatedToken savedToken = blockContext.getToken(token.image);
+      String tokenImage;
+
+      if (savedToken == null)
+      {
+        tokenImage = blockContext.generateSymbolName();
+        blockContext.addToken(token.image, token);
+      }
+      else
+      {
+        tokenImage = savedToken.image;
+      }
+
+      token.image = tokenImage;
+    }
+  }
+
+  /**
+  *
+  * @param contextStack
+  * @param startToken
+  * @return
+  */
+  public AnnotatedToken processCodeBlock(ProgramContextStack contextStack,
+    AnnotatedToken startToken)
+  {
+    // grab the context on top of the stack
+    ProgramContext blockContext = (ProgramContext) contextStack.peek();
+    AnnotatedToken token = startToken;
+
+    while (token != null)
+    {
+      switch (token.getKind())
+      {
+      case AnnotationConstants.NAMED_FUNCTION:
+      case AnnotationConstants.ANONYMOUS_FUNCTION:
+        token = FunctionState.getInstance().enterState(contextStack, token,
+            blockContext.getNameGen());
+
+        break;
+
+      case AnnotationConstants.VAR_IDENTIFIER:
+      {
+        processVarIdentifier(contextStack, token);
+
+        break;
+      }
+
+      case JSParser15Constants.IDENTIFIER:
+      case AnnotationConstants.OBJECT_IDENTIFIER:
+
+        AnnotatedToken obfuscatedToken = contextStack.getToken(token.image);
+
+        if (obfuscatedToken != null)
+        {
+          token.image = obfuscatedToken.image;
+        }
+
+        break;
+
+      case JSParser15Constants.LBRACE:
+        token = StatementBlockState.getInstance().enterState(contextStack,
+            token, blockContext.getNameGen());
+
+        break;
+
+      case JSParser15Constants.RBRACE:
+        exitState(contextStack);
+
+        return token;
+      }
+
+      token = token.getNext();
+    }
+
+    return token;
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/ObfuscationState.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/ObfuscationState.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/RootState.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/RootState.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/RootState.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/RootState.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.state;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.NameGen;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContext;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContextStack;
+
+
+public class RootState extends ObfuscationState
+{
+  static private RootState _instance;
+
+  // private construnctor for singleton
+  private RootState()
+  {
+  }
+
+  static public RootState getInstance()
+  {
+    if (_instance == null)
+    {
+      synchronized (RootState.class)
+      {
+        if (_instance == null)
+        {
+          _instance = new RootState();
+        }
+      }
+    }
+
+    return _instance;
+  }
+
+  public AnnotatedToken enterState(ProgramContextStack contextStack,
+    AnnotatedToken startToken, NameGen nameGen)
+  {
+    contextStack.pushContext(new ProgramContext("root"));
+
+    return processCodeBlock(contextStack, startToken);
+  }
+
+  public void exitState(ProgramContextStack contextStack)
+  {
+    contextStack.popContext();
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/RootState.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/RootState.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/StatementBlockState.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/StatementBlockState.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/StatementBlockState.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/StatementBlockState.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.obfuscation.state;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.NameGen;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContext;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.ProgramContextStack;
+
+
+public class StatementBlockState extends ObfuscationState
+{
+  static private StatementBlockState _instance;
+
+  private StatementBlockState()
+  {
+  }
+
+  static public StatementBlockState getInstance()
+  {
+    if (_instance == null)
+    {
+      synchronized (StatementBlockState.class)
+      {
+        if (_instance == null)
+        {
+          _instance = new StatementBlockState();
+        }
+      }
+    }
+
+    return _instance;
+  }
+
+  public AnnotatedToken enterState(ProgramContextStack contextStack,
+    AnnotatedToken startToken, NameGen nameGen)
+  {
+    // do not create a new context in a statement block. JavaScript does not use a new scope in a
+    // statement block
+    AnnotatedToken token = startToken.getNext();
+
+    return processCodeBlock(contextStack, token);
+  }
+
+  public void exitState(ProgramContextStack contextStack)
+  {
+    // do not pop context
+  }
+
+  protected void processVarIdentifier(ProgramContextStack contextStack,
+    AnnotatedToken token)
+  {
+    ProgramContext blockContext = (ProgramContext) contextStack.peek();
+
+    // normal processing for functions that do not use eval() calls
+    if (!(blockContext instanceof FunctionContext) ||
+        (blockContext instanceof FunctionContext &&
+        ((FunctionContext) blockContext).canObfuscateLocalVars()))
+    {
+      super.processVarIdentifier(contextStack, token);
+    }
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/StatementBlockState.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/obfuscation/state/StatementBlockState.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/output/OutputGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/output/OutputGenerator.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/output/OutputGenerator.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/output/OutputGenerator.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.output;
+
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.filters.ObfuscatorFilter;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.AnnotatedToken;
+import org.apache.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser.Token;
+import java.io.BufferedOutputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+
+public class OutputGenerator implements ObfuscatorFilter
+{
+  private PrintStream _outStream;
+
+  public OutputGenerator()
+  {
+  }
+
+  public OutputGenerator(OutputStream outStream)
+  {
+    _outStream = new PrintStream(new BufferedOutputStream(outStream));
+  }
+
+  public AnnotatedToken filter(AnnotatedToken startToken)
+  {
+    AnnotatedToken token = startToken;
+
+    while (token != null)
+    {
+      printToken(token);
+      token = token.getNext();
+    }
+
+    _outStream.flush();
+
+    return startToken;
+  }
+
+  public void setOutputStream(OutputStream outStream)
+  {
+    _outStream = new PrintStream(new BufferedOutputStream(outStream));
+  }
+
+  public PrintStream getOutputStream()
+  {
+    return _outStream;
+  }
+
+  private void printToken(Token token)
+  {
+    // print special tokens first
+    if (token.specialToken != null)
+    {
+      printToken(token.specialToken);
+    }
+
+    _outStream.print(token.image);
+  }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/output/OutputGenerator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/filters/output/OutputGenerator.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotatedToken.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotatedToken.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotatedToken.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotatedToken.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser;
+
+import java.util.Vector;
+
+public class AnnotatedToken extends Token {
+    protected static final Vector SPECIAL_TYPES = new Vector();
+
+    static {
+        SPECIAL_TYPES.add("Profiler");
+        SPECIAL_TYPES.add("Checkpoint");
+        SPECIAL_TYPES.add("Assert");
+        SPECIAL_TYPES.add("Logger");
+    }
+
+    protected int _annotationKind = AnnotationConstants.UNDEFINED;
+    protected Object _annotationObject;
+    protected int _wsSensitive;
+    protected boolean _remove;
+    protected boolean _funcUsesEval;
+    protected String _type = "undefined";
+    protected Vector _productions = new Vector();
+
+    public AnnotatedToken() {
+    }
+
+    public AnnotatedToken(int annotationKind, Object annotationObject) {
+        super();
+        _annotationKind = annotationKind;
+        _annotationObject = annotationObject;
+    }
+
+    public void setAnnotationKind(int annotationKind) {
+        _annotationKind = annotationKind;
+    }
+
+    public int getAnnotationKind() {
+        return _annotationKind;
+    }
+
+    public int getKind() {
+        if (_annotationKind != AnnotationConstants.UNDEFINED) {
+            return _annotationKind;
+        }
+
+        return kind;
+    }
+
+    public void setAnnotationObject(Object annotationObject) {
+        _annotationObject = annotationObject;
+    }
+
+    public Object getAnnotationObject() {
+        return _annotationObject;
+    }
+
+    public AnnotatedToken getNext() {
+        return (AnnotatedToken)next;
+    }
+
+    public AnnotatedToken getSpecialToken() {
+        return (AnnotatedToken)specialToken;
+    }
+
+    public boolean isWhiteSpace() {
+        return (kind == JSParser15Constants.WS);
+    }
+
+    public boolean isNewLine() {
+        return (kind == JSParser15Constants.EOL);
+    }
+
+    public boolean isComment() {
+        return ((kind == JSParser15Constants.SINGLE_LINE_COMMENT) ||
+                (kind == JSParser15Constants.MULTI_LINE_COMMENT));
+    }
+
+    public boolean isWSSensitive() {
+        return _wsSensitive != 0;
+    }
+
+    public void setWSSensitive(int i) {
+        _wsSensitive = i;
+    }
+
+    public boolean isPrefixWSSensitive() {
+        return _wsSensitive == 1;
+    }
+
+    public boolean isInfixWSSensitive() {
+        return _wsSensitive == 2;
+    }
+
+    public boolean isRemovableKeyword() {
+        boolean isRemovable = false;
+
+        switch (kind) {
+        default :
+            break;
+
+            //      case JSParser14Constants.ASSERT_STATEMENT:
+            //      case JSParser14Constants.LOGGER_STATEMENT:
+            //        isRemovable = true;
+            //        break;
+        }
+
+        return isRemovable;
+    }
+
+    public boolean isSpecialClassType() {
+        return SPECIAL_TYPES.contains(image);
+    }
+
+    public boolean isSpecialObjectType() {
+        return SPECIAL_TYPES.contains(_type);
+    }
+
+    /**
+   * @return Returns the _remove.
+   */
+    public boolean canRemove() {
+        return _remove;
+    }
+
+    /**
+   * @param _remove The _remove to set.
+   */
+    public void setRemovable(boolean remove) {
+        this._remove = remove;
+    }
+
+    /**
+   * @return Returns the _type.
+   */
+    public String getType() {
+        return _type;
+    }
+
+    /**
+   * @param _type The _type to set.
+   */
+    public void setType(String type) {
+        this._type = type;
+    }
+
+    public void setFunctionUsesEval(boolean usesEval) {
+        _funcUsesEval = usesEval;
+    }
+
+    public boolean functionUsesEval() {
+        return _funcUsesEval;
+    }
+
+    //    public void addProduction(SimpleNode node) {
+    //        _productions.add(node);
+    //    }
+
+    public Vector getProductions() {
+        return _productions;
+    }
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotatedToken.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotatedToken.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotationConstants.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotationConstants.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotationConstants.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotationConstants.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser;
+
+public interface AnnotationConstants {
+    int UNDEFINED = -999;
+    int VAR_IDENTIFIER = -1;
+    int FUNCTION_NAME_IDENTIFIER = -2;
+    int FUNCTION_PARAM_IDENTIFIER = -3;
+    int LITERAL_OBJECT_KEY_IDENTIFIER = -4;
+    int OBJECT_IDENTIFIER = -5;
+    int OBJECT_FIELD_IDENTIFIER = -6;
+    int OBJECT_METHOD_IDENTIFIER = -7;
+    int NAMED_FUNCTION = -8;
+    int ANONYMOUS_FUNCTION = -9;
+}
\ No newline at end of file

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/AnnotationConstants.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/JSParserTest15.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/JSParserTest15.java?rev=425117&view=auto
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/JSParserTest15.java (added)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/JSParserTest15.java Mon Jul 24 09:58:43 2006
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed 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.myfaces.trinidadbuild.plugin.javascript.obfuscator.javascript15parser;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+
+public class JSParserTest15
+{
+  protected InputStream _in;
+
+  public JSParserTest15(InputStream in)
+  {
+    _in = in;
+  }
+
+  public void start()
+  {
+    // create an instance of the parser
+    JSParser15 jsParser = new JSParser15(_in);
+
+    Token t;
+
+    try
+    {
+      for (t = jsParser.Program(); t != null; t = t.next)
+      {
+        System.out
+        .println(t.kind + "\t" + JSParser15.tokenImage[t.kind] + "\t" +
+                           t.image + "\t" +
+                           ((AnnotatedToken) t).getAnnotationKind() +
+                           "\t" + ((AnnotatedToken) t).canRemove());
+        printSpecialTokens((AnnotatedToken) t);
+      }
+
+      // jsParser.getRootNode().dump("p");
+    }
+    catch (Throwable e)
+    {
+      e.printStackTrace();
+    }
+  }
+
+  public void printSpecialTokens(AnnotatedToken token)
+  {
+    AnnotatedToken specialToken = token.getSpecialToken();
+
+    while (specialToken != null)
+    {
+      System.out.println(specialToken.image);
+      specialToken = specialToken.getSpecialToken();
+    }
+  }
+
+  public static void main(String[] args)
+  {
+    if (args.length == 0)
+    {
+      System.out.println("Usage: JSParserTest15 <JS File>");
+
+      return;
+    }
+
+    File jsFile = new File(args[0]);
+    FileInputStream inFileStream;
+
+    try
+    {
+      inFileStream = new FileInputStream(jsFile);
+
+      JSParserTest15 jsParserTest = new JSParserTest15(inFileStream);
+      jsParserTest.start();
+      inFileStream.close();
+    }
+    catch (FileNotFoundException e)
+    {
+      System.out.println("FileNotFound");
+    }
+    catch (IOException e)
+    {
+      System.out.println("FileIO");
+    }
+  }
+}
\ No newline at end of file

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/plugins/maven-javascript-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/javascript/obfuscator/javascript15parser/JSParserTest15.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL