You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2010/03/04 23:03:10 UTC

svn commit: r919196 - in /myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF: facelets/ java/org/apache/myfaces/javaloader/componentTest/

Author: werpu
Date: Thu Mar  4 22:03:09 2010
New Revision: 919196

URL: http://svn.apache.org/viewvc?rev=919196&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-86
adding basics of the taint history component

Added:
    myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java   (with props)
    myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java   (with props)
Modified:
    myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/extscripting.taglib.xml

Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/extscripting.taglib.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/extscripting.taglib.xml?rev=919196&r1=919195&r2=919196&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/extscripting.taglib.xml (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/extscripting.taglib.xml Thu Mar  4 22:03:09 2010
@@ -14,4 +14,13 @@
             <renderer-type>org.apache.myfaces.scripting.components.CompilerComponentRenderer</renderer-type>
         </component>
     </tag>
+    <tag>
+         <tag-name>taintHistory</tag-name>
+         <component>
+             <component-type>org.apache.myfaces.scripting.components.TaintHistory</component-type>
+             <renderer-type>org.apache.myfaces.scripting.components.TaintHistoryRenderer</renderer-type>
+         </component>
+     </tag>
+
+
 </facelet-taglib>

Added: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java?rev=919196&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java (added)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java Thu Mar  4 22:03:09 2010
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.javaloader.componentTest;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIOutput;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@FacesComponent("org.apache.myfaces.scripting.components.TaintHistory")
+public class TaintHistory extends UIOutput {
+
+    static final int DEFAULT_NO_ENTRIES = 10;
+
+    enum PropertyKeys {
+        noEntries, filter
+    }
+
+    public TaintHistory() {
+        setRendererType("org.apache.myfaces.scripting.components.TaintHistoryRenderer");
+    }
+
+    public void setNoEntries(int entries) {
+        if (entries < 0)
+            entries = DEFAULT_NO_ENTRIES;
+        getStateHelper().put(PropertyKeys.noEntries, entries);
+    }
+
+    public int getNoEntries() {
+        Integer retVal = (Integer) getStateHelper().eval(PropertyKeys.noEntries);
+        if (retVal == null) {
+            retVal = DEFAULT_NO_ENTRIES;
+        }
+        return retVal;
+    }
+
+    public void setFilter(int filter) {
+        getStateHelper().put(PropertyKeys.filter, filter);
+    }
+
+    public String getFilter() {
+        return (String) getStateHelper().eval(PropertyKeys.filter);
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistory.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java?rev=919196&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java (added)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java Thu Mar  4 22:03:09 2010
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.javaloader.componentTest;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.components.CompilerComponent;
+import org.apache.myfaces.scripting.core.util.WeavingContext;
+import org.apache.myfaces.scripting.refresh.ReloadingMetadata;
+import org.apache.myfaces.scripting.sandbox.compiler.CompilationResult;
+import org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.FacesRenderer;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.logging.Logger;
+
+/**
+ * A renderer which displays our taint history
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@FacesRenderer(componentFamily = "javax.faces.Output", rendererType = "org.apache.myfaces.scripting.components.TaintHistoryRenderer")
+public class TaintHistoryRenderer extends HtmlTextRendererBase {
+    static Logger _log = Logger.getLogger(JavaTestRenderer1.class.getName());
+
+  @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        super.encodeBegin(context, component);
+
+        ResponseWriter wrtr = FacesContext.getCurrentInstance().getResponseWriter();
+
+        startDiv(component, wrtr, "historyBox");
+        int lastTainted = ((TaintHistory)component).getNoEntries();
+
+        Collection<ReloadingMetadata> result = WeavingContext.getRefreshContext().getLastTainted(lastTainted);
+        if (result == null || result.isEmpty()) {
+            wrtr.write("No taint history found");
+        }
+        endDiv(wrtr);
+
+        wrtr.flush();
+
+    }
+
+    private void writeWarnings(UIComponent component, ResponseWriter wrtr, CompilationResult result) throws IOException {
+        startDiv(component, wrtr, "warnings");
+        for (CompilationResult.CompilationMessage msg : result.getWarnings()) {
+            startDiv(component, wrtr, "line");
+            writeDiv(component, wrtr, "lineNo", String.valueOf(msg.getLineNumber()));
+            writeDiv(component, wrtr, "message", msg.getMessage());
+            endDiv(wrtr);
+        }
+        endDiv(wrtr);
+    }
+
+    private void writeWarningsLabel(UIComponent component, ResponseWriter wrtr, CompilerComponent compilerComp) throws IOException {
+        if (!StringUtils.isBlank(compilerComp.getWarningsLabel())) {
+            startDiv(component, wrtr, "warningsLabel");
+            wrtr.write(compilerComp.getWarningsLabel());
+            endDiv(wrtr);
+        }
+    }
+
+    private void writeErrors(UIComponent component, ResponseWriter wrtr, CompilationResult result) throws IOException {
+        startDiv(component, wrtr, "errors");
+        for (CompilationResult.CompilationMessage msg : result.getErrors()) {
+            startDiv(component, wrtr, "line");
+            writeDiv(component, wrtr, "lineNo", String.valueOf(msg.getLineNumber()));
+            writeDiv(component, wrtr, "message", msg.getMessage());
+            endDiv(wrtr);
+        }
+        endDiv(wrtr);
+    }
+
+    private String writeDiv(UIComponent component, ResponseWriter wrtr, String styleClass, String value) throws IOException {
+        startDiv(component, wrtr, styleClass);
+        wrtr.write(value);
+        endDiv(wrtr);
+        return "";
+    }
+
+    private void endDiv(ResponseWriter wrtr) throws IOException {
+        wrtr.endElement("div");
+    }
+
+    private void startDiv(UIComponent component, ResponseWriter wrtr, String styleClass) throws IOException {
+        wrtr.startElement("div", component);
+        wrtr.writeAttribute("class", styleClass, null);
+    }
+
+    private void writeErrorsLabel(UIComponent component, ResponseWriter wrtr, CompilerComponent compilerComp) throws IOException {
+        if (!StringUtils.isBlank(compilerComp.getErrorsLabel())) {
+            startDiv(component, wrtr, "errorsLabel");
+            wrtr.write(compilerComp.getErrorsLabel());
+            endDiv(wrtr);
+        }
+    }
+
+    private void copyCompilationResult(CompilationResult result, CompilationResult tempResult) {
+        result.getErrors().addAll(tempResult.getErrors());
+        result.getWarnings().addAll(tempResult.getWarnings());
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/TaintHistoryRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL