Skip to content

Commit

Permalink
Support for a supertemplate, which can do all thing, a normal templat…
Browse files Browse the repository at this point in the history
…e can do.

Its a layer under the servlets, this means, #[page]# will be replaced by serverletcode, the rest can be set by you.
(TODO: if we use this for layout, we need to read "TITLE" from the servlet's tp, to set it outside of the servlet.)

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2302 6c8d7289-2bf4-0310-a012-ef5d649a1542
  • Loading branch information
allo committed Jul 18, 2006
1 parent 4bd6265 commit 7b0e252
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .classpath
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="source"/>
<classpathentry excluding="env/|htdocsdefault/|locale/|proxymsg/|yacy/" output="htroot" kind="src" path="htroot"/>
<classpathentry excluding="htdocsdefault/|locale/|proxymsg/|yacy/|env/|env/" output="htroot" kind="src" path="htroot"/>
<classpathentry kind="src" path="htroot/htdocsdefault"/>
<classpathentry kind="src" path="htroot/yacy"/>
<classpathentry kind="src" path="htroot/env"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/commons-collections.jar"/>
<classpathentry kind="lib" path="lib/commons-pool-1.2.jar"/>
Expand Down
3 changes: 3 additions & 0 deletions htroot/env/page.html
@@ -0,0 +1,3 @@
#[test1]#
#[page]#
#(test2)#zero::one::two#(/test2)#
41 changes: 41 additions & 0 deletions htroot/env/page.java
@@ -0,0 +1,41 @@
//page.java - super template, to allow a scripted layout.
//----------------------------------------------------------
//part of YaCy
//
// (C) 2006 by Alexander Schier
//
// last change: $LastChangedDate: $ by $LastChangedBy: $
// $LastChangedRevision: $
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


//note: this isn't useful, yet.
//this is only a basic demonstration, what can be done with the supertemplates.
import de.anomic.http.httpHeader;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;

public class page {
public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) {
//plasmaSwitchboard switchboard = (plasmaSwitchboard) env;
serverObjects prop = new serverObjects();
prop.put("test1", "testit!");
prop.put("test2", 1);
return prop;
}

}
22 changes: 21 additions & 1 deletion source/de/anomic/http/httpdFileHandler.java
Expand Up @@ -691,7 +691,26 @@ public void doResponse(Properties conProp, httpHeader requestHeader, OutputStrea
} else {
fis = new BufferedInputStream(new FileInputStream(targetFile));
}


//use the page template
if(sb.getConfig("usePageTemplate", "false").equals("true")){
o = new serverByteBuffer();
File pageFile=getOverlayedFile("/env/page.html");
File pageClass=getOverlayedClass("/env/page.html");
if(pageFile != null && pageFile.exists()){
//warning: o,tp and fis are reused
httpTemplate.writeTemplate(fis, o, tp, "-UNRESOLVED_PATTERN-".getBytes());

if(pageClass != null && pageClass.exists())
tp = (serverObjects) rewriteMethod(pageClass).invoke(null, new Object[] {requestHeader, args, switchboard});
else
tp = new serverObjects();
tp.put("page", o.toString());
fis=new BufferedInputStream(new FileInputStream(pageFile));

}
}

o = new serverByteBuffer();
if (zipContent) zippedOut = new GZIPOutputStream(o);
httpTemplate.writeTemplate(fis, (zipContent) ? (OutputStream)zippedOut: (OutputStream)o, tp, "-UNRESOLVED_PATTERN-".getBytes());
Expand All @@ -701,6 +720,7 @@ public void doResponse(Properties conProp, httpHeader requestHeader, OutputStrea
zippedOut.close();
zippedOut = null;
}

result = o.toByteArray();

if (this.md5Digest != null) {
Expand Down
6 changes: 6 additions & 0 deletions yacy.init
Expand Up @@ -696,6 +696,12 @@ CRDist1Target = kaskelix.de:8080,yacy.dyndns.org:8000,suma-lab.de:8080
# Hash of the peer, you would like to store to the data your installation collected.
storagePeerHash =

#use /env/page.html (and if it exists page.class) as super template,
# which includes the generated page in #[page]#.
#This option is for developers only, because it may be integrated by default, or not,
#but its not useful to mix configurations with and without this supertemplate.
usePageTemplate = false

# Search sequence settings
# collection:
# time = time to get a RWI out of RAM cache, assortments and WORDS files
Expand Down

0 comments on commit 7b0e252

Please sign in to comment.