Author: sijskes
Date: Thu Jan 13 16:12:01 2011
New Revision: 1058642
URL: http://svn.apache.org/viewvc?rev=1058642&view=rev
Log:
added velocity
Added:
incubator/river/jtsk/trunk/src/org/apache/river/config/builder/VelocityConfigurationBuilder.java
Added:
incubator/river/jtsk/trunk/src/org/apache/river/config/builder/VelocityConfigurationBuilder.java
URL:
http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/config/builder/VelocityConfigurationBuilder.java?rev=1058642&view=auto
==============================================================================
---
incubator/river/jtsk/trunk/src/org/apache/river/config/builder/VelocityConfigurationBuilder.java
(added)
+++
incubator/river/jtsk/trunk/src/org/apache/river/config/builder/VelocityConfigurationBuilder.java
Thu Jan 13 16:12:01 2011
@@ -0,0 +1,220 @@
+/*
+ * 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.river.config.builder;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Properties;
+import net.jini.config.Configuration;
+import net.jini.config.ConfigurationException;
+import net.jini.config.ConfigurationFile;
+import org.apache.river.config.ConfigurationFactory;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+
+/**
+ *
+ * @author sim
+ */
+public class VelocityConfigurationBuilder
+ implements ConfigurationFactory
+{
+ private String serviceHost = null ;
+
+ private int servicePort = 0 ;
+
+ private String registryHost = null ;
+
+ private int registryPort = 0 ;
+
+ private String group = "org.apache.river.demo" ;
+
+ private String codebase = "" ;
+
+ private boolean disableMulticast = false ;
+
+ public VelocityConfigurationBuilder()
+ {
+ }
+
+ public int getServicePort()
+ {
+ return servicePort;
+ }
+
+ public void setServicePort(int servicePort)
+ {
+ this.servicePort = servicePort;
+ }
+
+ public String getServiceHost()
+ {
+ return serviceHost;
+ }
+
+ public void setServiceHost(String serviceHost)
+ {
+ this.serviceHost = serviceHost;
+ }
+
+ public String getRegistryHost()
+ {
+ return registryHost;
+ }
+
+ public void setRegistryHost(String registryHost)
+ {
+ this.registryHost = registryHost;
+ }
+
+ public int getRegistryPort()
+ {
+ return registryPort;
+ }
+
+ public void setRegistryPort(int registryPort)
+ {
+ this.registryPort = registryPort;
+ }
+
+ public String getGroup()
+ {
+ return group;
+ }
+
+ public void setGroup(String group)
+ {
+ this.group = group;
+ }
+
+ public String getCodebase()
+ {
+ return codebase;
+ }
+
+ public void setCodebase(String codebase)
+ {
+ this.codebase = codebase;
+ }
+
+ public boolean isDisableMulticast()
+ {
+ return disableMulticast;
+ }
+
+ public void setDisableMulticast(boolean disableMulticast)
+ {
+ this.disableMulticast = disableMulticast;
+ }
+
+ public String getConfigurationText() throws IOException
+ {
+ Properties p = new Properties();
+ p.load( getClass().getResourceAsStream("velocity.properties") );
+
+ VelocityEngine ve = new VelocityEngine(p);
+
+ VelocityContext context = new VelocityContext();
+
+ if( disableMulticast ) {
+ final String mcstr = "multicastInterfaces = new
java.net.NetworkInterface[] { } ;" ;
+ context.put("multicastInterfaces", mcstr );
+ }
+
+ context.put("registryEndpoint",
String.format("TcpServerEndpoint.getInstance(%s,%d)",registryHost,registryPort)
);
+ context.put("serverEndpoint",
String.format("TcpServerEndpoint.getInstance(%s,%d)",serviceHost,servicePort) );
+ context.put("groups", String.format("\"%s\"",group) );
+
+ Template template = ve.getTemplate(
getClass().getResource("template.vm").toExternalForm() );
+
+ StringWriter sw = new StringWriter();
+
+ template.merge(context, sw);
+
+ return sw.toString();
+ }
+
+ public class ConfigurationFile2
+ extends ConfigurationFile
+ {
+
+ public ConfigurationFile2(Reader reader, String[] options, ClassLoader
cl) throws ConfigurationException
+ {
+ super(reader, options, cl);
+ }
+
+ public ConfigurationFile2(Reader reader, String[] options) throws
ConfigurationException
+ {
+ super(reader, options);
+ }
+
+ @Override
+ protected Object getSpecialEntry(String name) throws
ConfigurationException
+ {
+ if( "$configuration".equals(name) ) {
+ return this ;
+ }
+ return super.getSpecialEntry(name);
+ }
+
+ @Override
+ protected Class getSpecialEntryType(String name) throws
ConfigurationException
+ {
+ if( "$configuration".equals(name) ) {
+ return this.getClass();
+ }
+ return super.getSpecialEntryType(name);
+ }
+
+ }
+
+ @Override
+ public Configuration createConfiguration() throws ConfigurationException
+ {
+ try {
+ StringReader sr = new StringReader( getConfigurationText() );
+
+ final ConfigurationFile cf = new ConfigurationFile2(sr,null);
+
+ return cf ;
+ } catch( ConfigurationException c ) {
+ throw c ;
+ } catch( Exception e ) {
+ throw new ConfigurationException("",e);
+ }
+ }
+
+ public void print( File file ) throws IOException
+ {
+ FileWriter fw = new FileWriter(file);
+ print(fw);
+ fw.close();
+ }
+
+ public void print( Writer wr ) throws IOException
+ {
+ wr.append( getConfigurationText() );
+ }
+}