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