1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

Add Rustici trunk branch, synched to rev r13498

This commit is contained in:
Kevin Glynn 2010-08-26 12:07:18 +02:00
parent b8dffaab5b
commit ff8ef87f54
33 changed files with 414 additions and 670 deletions

View File

@ -2,7 +2,6 @@
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-codec-1.4.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.4.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -16,5 +16,10 @@
<Name>Name</Name>
<Get>${this}.getName()</Get>
</Property>
<Property>
<Type>System.Boolean</Type>
<Name>IsDirectory</Name>
<Get>${this}.isDirectory()</Get>
</Property>
</Properties>
</Class>

View File

@ -20,17 +20,6 @@
<Name>TrueString</Name>
<Get>"True"</Get>
</Property>
<!-- C# 2.0 nullable value types -->
<Property>
<Type>System.Boolean</Type>
<Name>HasValue</Name>
<Get>${this} != null</Get>
</Property>
<Property>
<Type>System.Boolean</Type>
<Name>Value</Name>
<Get>${this}</Get>
</Property>
</Properties>
<Methods>
<Method>

View File

@ -50,17 +50,6 @@
<Java>Character.isLetter(${ch})</Java>
</Method>
<Method>
<Return>System.Boolean</Return>
<Name>IsLetterOrDigit</Name>
<Params>
<Param>
<Type>System.Char</Type>
<Name>ch</Name>
</Param>
</Params>
<Java>Character.isLetterOrDigit(${ch})</Java>
</Method>
<Method>
<Return>System.Boolean</Return>
<Name>IsUpper</Name>
<Params>

View File

@ -14,34 +14,6 @@
</Property>
</Properties>
<Methods>
<Method>
<Return>System.Byte[]</Return>
<Name>FromBase64String</Name>
<Params>
<Param>
<Type>System.String</Type>
<Name>s</Name>
</Param>
</Params>
<Imports>
<Import>org.apache.commons.codec.binary.Base64</Import>
</Imports>
<Java>Base64.decodeBase64(${s})</Java>
</Method>
<Method>
<Return>System.String</Return>
<Name>ToBase64String</Name>
<Params>
<Param>
<Type>System.Byte[]</Type>
<Name>inArray</Name>
</Param>
</Params>
<Imports>
<Import>org.apache.commons.codec.binary.Base64</Import>
</Imports>
<Java>Base64.encodeBase64String(${inArray})</Java>
</Method>
<Method>
<Return>System.Boolean</Return>
<Name>ToBoolean</Name>

View File

@ -67,10 +67,9 @@
</Params>
<Imports>
<Import>RusticiSoftware.System.IO.StreamReader</Import>
<Import>RusticiSoftware.System.Text.EncodingSupport</Import>
<Import>java.io.*</Import>
</Imports>
<Java>new BufferedReader(StreamReader.make(new BufferedInputStream(${stream}), new EncodingSupport("UTF-8")))</Java>
<Java>new BufferedReader(StreamReader.make(new BufferedInputStream(${stream}), "UTF-8"))</Java>
</Constructor>
</Constructors>
<Methods>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Class xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file://C:/Documents%20and%20Settings/kevin.glynn/My%20Documents/CS2JLibrary/Translation.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>System.Net.Mail.MailAddressCollection</Name>
<Properties>
<Property>
<!-- tried inheriting from ICollection and moving this definition there, didn't work so just
copying this from IDictionary -->
<Type>System.Int32</Type>
<Name>Count</Name>
<Get>${this}.size()</Get>
</Property>
</Properties>
</Class>

View File

@ -20,20 +20,6 @@
</Imports>
<Java>NumberFormat.getInstance(${provider}).format(${this})</Java>
</Method>
<Method>
<Return>System.String</Return>
<Name>ToString</Name>
<Params>
<Param>
<Type>System.String</Type>
<Name>format</Name>
</Param>
</Params>
<Imports>
<Import>RusticiSoftware.System.NumberSupport</Import>
</Imports>
<Java>NumberSupport.format(${this}, ${format})</Java>
</Method>
</Methods>
<Casts>
</Casts>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Class xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file://C:/Documents%20and%20Settings/kevin.glynn/My%20Documents/CS2JLibrary/Translation.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>System.Security.Cryptography.X509Certificates.X509Certificate2</Name>
<Inherits>
<Type>System.Security.Cryptography.X509Certificates.X509Certificate</Type>
</Inherits>
<Java>X509Certificate</Java>
<Imports>
<Import>java.security.cert.X509Certificate</Import>
</Imports>
<Constructors>
<!-- <Constructor>-->
<!-- <Params>-->
<!-- <Param>-->
<!-- <Name>filename</Name>-->
<!-- <Type>System.String</Type>-->
<!-- </Param>-->
<!-- <Param>-->
<!-- <Name>password</Name>-->
<!-- <Type>System.String</Type>-->
<!-- </Param>-->
<!-- </Params>-->
<!-- <Imports>-->
<!-- <Import>java.security.cert.X509Certificate</Import>-->
<!-- </Imports>-->
<!-- <Java>new GregorianCalendar(${year}, ${month}-1, ${day}).getTime()</Java>-->
<!-- </Constructor>-->
</Constructors>
<Properties>
</Properties>
<Methods>
</Methods>
</Class>

View File

@ -14,19 +14,16 @@
<Constructors>
<Constructor>
<Params>
<Param>
<Name>char</Name>
<Type>System.Char</Type>
</Param>
<Param>
<Name>length</Name>
<Type>System.Int32</Type>
</Param>
<Param>
<Name>char</Name>
<Type>System.Char</Type>
</Param>
</Params>
<Imports>
<Import>RusticiSoftware.System.StringSupport</Import>
</Imports>
<Java>StringSupport.mkString(${char}, ${length})</Java>
<Java>new String(${length}, ${char}) /* FIX ME */</Java>
</Constructor>
<Constructor>
<Params>

View File

@ -9,23 +9,9 @@
<Property>
<Name>UTF8</Name>
<Type>System.Text.Encoding</Type>
<Get>(new EncodingSupport("UTF-8"))</Get>
<Imports>
<Import>RusticiSoftware.System.Text.EncodingSupport</Import>
</Imports>
<Get>"UTF-8"</Get>
</Property>
</Properties>
<Methods>
<Method>
<Return>System.Byte[]</Return>
<Name>GetBytes</Name>
<Params>
<Param>
<Type>System.String</Type>
<Name>s</Name>
</Param>
</Params>
<Java>${this}.getBytes(${s})</Java>
</Method>
</Methods>
</Class>

View File

@ -24,16 +24,7 @@
<Name>Length</Name>
<Type>System.Int32</Type>
<Get>${this}.length()</Get>
<Set>StringBuilderSupport.setLength(${this}, ${value})</Set>
<Imports>
<Import>RusticiSoftware.System.Text.StringBuilderSupport</Import>
</Imports>
</Property>
<Property>
<Name>Capacity</Name>
<Type>System.Int32</Type>
<Get>${this}.capacity()</Get>
<Set>${this}.ensureCapacity(${value})</Set>
<Set>${this}.setlength(${value})</Set>
</Property>
</Properties>
<Methods>
@ -59,20 +50,6 @@
</Params>
<Java>${this}.append((${arg}) + System.getProperty("line.separator"))</Java>
</Method>
<Method>
<Return>System.Int32</Return>
<Name>EnsureCapacity</Name>
<Params>
<Param>
<Name>arg</Name>
<Type>System.Int32</Type>
</Param>
</Params>
<Imports>
<Import>RusticiSoftware.System.Text.StringBuilderSupport</Import>
</Imports>
<Java>StringBuilderSupport.ensureCapacity(${this}, ${arg})</Java>
</Method>
<Method>
<Return>System.Text.StringBuilder</Return>
<Name>Insert</Name>

View File

@ -6,4 +6,4 @@ classes.dir=${build.dir}/classes
jar.dir=${build.dir}/jar
zip.dir=${build.dir}/zip
java.target.vm=1.5
src.zip=${zip.dir}/cs2jlibrary-src.zip

View File

@ -50,10 +50,6 @@
<target name="src" description="Make a source distribution">
<mkdir dir="${zip.dir}" />
<exec executable="git" outputproperty="build.version">
<arg line="describe"/>
</exec>
<property name="src.zip" value="${zip.dir}/cs2jlibrary-src-${build.version}.zip"/>
<zip destfile="${src.zip}">
<fileset dir="${basedir}">
<include name="src/**/*" />

View File

@ -1,14 +0,0 @@
Apache Commons Codec
Copyright 2002-2009 The Apache Software Foundation
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
--------------------------------------------------------------------------------
src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java contains
test data from http://aspell.sourceforge.net/test/batch0.tab.
Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying
and distribution of this entire article is permitted in any medium,
provided this notice is preserved.
--------------------------------------------------------------------------------

View File

@ -1,5 +0,0 @@
3rd Party Software License
commons-lang, commons-codec Apache 2.0

View File

@ -24,10 +24,11 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;
public class FieldSupport {
public static Annotation[] getAnnotations(Field f, Class<?> filterBy, boolean inherits)
public static Annotation[] getAnnotations(Field f, Class filterBy, boolean inherits)
{
ArrayList<Annotation> filteredAnns = new ArrayList<Annotation>();

View File

@ -31,14 +31,14 @@ public class LocaleSupport {
// singleton
private LocaleSupport() {}
private static ThreadLocal<Locale> threadLocal = new InheritableThreadLocal<Locale>();
private static ThreadLocal threadLocal = new InheritableThreadLocal();
public static void setCurrentLocale(Locale locale) {
threadLocal.set(locale);
}
public static Locale getCurrentLocale() {
Locale locale = threadLocal.get();
Locale locale = (Locale) threadLocal.get();
if (locale == null) {
return Locale.getDefault();

View File

@ -33,7 +33,7 @@ public class DoubleSupport {
String formattedValue = "";
if (format.toLowerCase().indexOf("g") == 0 && format.length() < 3) {
if ((format.toLowerCase().indexOf("g") == 0 || format.toLowerCase().indexOf("n") == 0) && format.length() < 3) {
if (format.length() == 2) {
String lengthStr = format.substring(1);

View File

@ -23,12 +23,12 @@ package RusticiSoftware.System;
public class EnumSupport {
// returns true iff v is a valid ordinal position of a enum in e
public static boolean isDefined(Class<?> e, int v)
public static boolean isDefined(Class e, int v)
{
return (v >= 0 && v < e.getEnumConstants().length);
}
public static String toString(Enum<?> e, String m)
public static String toString(Enum e, String m)
{
if ("D".equals(m))
{

View File

@ -121,7 +121,7 @@ public class DirectorySupport {
// In .Net Directory.GetFiles, if the searchpattern contains directory path separators
// then it will search subdirs.
ArrayList<String> allMatches = new ArrayList<String>();
ArrayList allMatches = new ArrayList();
// we split on both / and \ characters
String[] patternComponents = searchpattern.split("[/\\\\]",2);
@ -145,7 +145,7 @@ public class DirectorySupport {
}
}
return allMatches.toArray(new String[allMatches.size()]);
return (String[])allMatches.toArray(new String[allMatches.size()]);
}
@ -177,7 +177,7 @@ public class DirectorySupport {
for (int i=0; i<children.length; i++) {
File child = new File(dp, children[i]);
if (child.isDirectory())
DirectorySupport.delete(dp.getPath(), true);
DirectorySupport.delete(child.getPath(), true);
else
child.delete();
}

View File

@ -24,8 +24,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import RusticiSoftware.System.Text.EncodingSupport;
public class StreamReader {
// Mimic the behaviour of .Net StreamReader
@ -93,13 +91,13 @@ public class StreamReader {
return retISR;
}
public static InputStreamReader make(InputStream is, EncodingSupport cs) throws IOException
public static InputStreamReader make(InputStream is, String cs) throws IOException
{
String enc = getEncoding(is);
if (enc != null)
return new InputStreamReader(is, enc);
else
return new InputStreamReader(is, cs.getString());
return new InputStreamReader(is, cs);
}
}

View File

@ -1,85 +0,0 @@
/*
Copyright 2007-2010 Rustici Software, LLC
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.
Author(s):
Kevin Glynn (kevin.glynn@scorm.com)
*/
package RusticiSoftware.System;
public class NumberSupport {
// public static float round(float num, int places) {
// long factor = (long)Math.pow(10,places);
// return Math.round(num * factor) / factor;
// }
/**
* Round a double value to a specified number of decimal
* places.
*
* @param val the value to be rounded.
* @param places the number of decimal places to round to.
* @return val rounded to places decimal places.
*/
public static double round(double val, int places) {
long factor = (long)Math.pow(10,places);
// Shift the decimal the correct number of places
// to the right.
val = val * factor;
// Round to the nearest integer.
long tmp = Math.round(val);
// Shift the decimal the correct number of places
// back to the left.
return (double)tmp / factor;
}
/**
* Format a number
*
* @param n the value to be formatted.
* @param format a C# standard numeric format string.
* @return n formatted according to C# format string.
* @throws NotImplementedException
*/
public static String format(Number n, String format) throws NotImplementedException {
String fStr = null;
switch (format.charAt(0)){
case 'X':
case 'x':
fStr = String.format("%1$0" + format.substring(1) + format.charAt(0), n);
break;
default:
throw new NotImplementedException("No implementation for " + format + " format string");
}
return fStr;
}
public static void main(String args[]) throws NotImplementedException {
double f = 10.123456789d;
System.out.println(f + " turns into " + round(f,3));
for (int i = 0; i <= 255; i++) {
byte b = (byte)i;
System.out.println(b + " turns into " + format(b,"X2"));
}
}
}

View File

@ -235,9 +235,9 @@ public class StringSupport {
if (str.endsWith(c1+""))
{
// Add empty string for .Net
ArrayList<String> ret_al = new ArrayList<String>(Arrays.asList(rets));
ArrayList ret_al = new ArrayList(Arrays.asList(rets));
ret_al.add("");
rets = ret_al.toArray(new String [ret_al.size()]);
rets = (String[])ret_al.toArray(new String [ret_al.size()]);
}
return rets;
}
@ -248,9 +248,9 @@ public class StringSupport {
if (str.endsWith(c1+"") || str.endsWith(c2+""))
{
// Add empty string for .Net
ArrayList<String> ret_al = new ArrayList<String>(Arrays.asList(rets));
ArrayList ret_al = new ArrayList(Arrays.asList(rets));
ret_al.add("");
rets = ret_al.toArray(new String [ret_al.size()]);
rets = (String[])ret_al.toArray(new String [ret_al.size()]);
}
return rets;
}
@ -265,16 +265,16 @@ public class StringSupport {
if (options != StringSplitOptions.RemoveEmptyEntries && str.endsWith(c+""))
{
// Add empty string for .Net
ArrayList<String> ret_al = new ArrayList<String>(Arrays.asList(rets));
ArrayList ret_al = new ArrayList(Arrays.asList(rets));
ret_al.add("");
rets = ret_al.toArray(new String [ret_al.size()]);
rets = (String[])ret_al.toArray(new String [ret_al.size()]);
break;
}
}
if (options == StringSplitOptions.RemoveEmptyEntries)
{
ArrayList<String> ret_al = new ArrayList<String>();
ArrayList ret_al = new ArrayList();
for (String p : rets)
{
if (!p.equals(""))
@ -282,7 +282,7 @@ public class StringSupport {
ret_al.add(p);
}
}
rets = ret_al.toArray(new String [ret_al.size()]);
rets = (String[])ret_al.toArray(new String [ret_al.size()]);
}
return rets;
@ -297,16 +297,16 @@ public class StringSupport {
if (options != StringSplitOptions.RemoveEmptyEntries && str.endsWith(s))
{
// Add empty string for .Net
ArrayList<String> ret_al = new ArrayList<String>(Arrays.asList(rets));
ArrayList ret_al = new ArrayList(Arrays.asList(rets));
ret_al.add("");
rets = ret_al.toArray(new String [ret_al.size()]);
rets = (String[])ret_al.toArray(new String [ret_al.size()]);
break;
}
}
if (options == StringSplitOptions.RemoveEmptyEntries)
{
ArrayList<String> ret_al = new ArrayList<String>();
ArrayList ret_al = new ArrayList();
for (String p : rets)
{
if (!p.equals(""))
@ -314,7 +314,7 @@ public class StringSupport {
ret_al.add(p);
}
}
rets = ret_al.toArray(new String [ret_al.size()]);
rets = (String[])ret_al.toArray(new String [ret_al.size()]);
}
return rets;
@ -329,25 +329,29 @@ public class StringSupport {
return isNullOrEmpty(str);
}
public static final boolean IsEmptyOrBlank(String str){
// Locate first non-trimmable index
int firstIdx = 0;
while (firstIdx < str.length())
{
if (isIn(str.charAt(firstIdx),wschars))
firstIdx++;
else
break;
}
return firstIdx == str.length();
}
public static final int lastIndexOfAny(String str, char[] anyOf)
{
int index = -1;
for (char test : anyOf)
{
index = Math.max(index, str.indexOf(test));
index = Math.max(index, str.lastIndexOf(test));
}
return index;
}
// in C# new String('x',50)
public static String mkString(char c, int count) {
char[] chars = new char[count];
for (int i = 0; i < count; i++) {
chars[i] = c;
}
return new String(chars);
}
public static void Testmain(String[] args)
{
System.out.println("**" + Trim("") + "**");
@ -383,6 +387,4 @@ public class StringSupport {
System.out.println("Split(\"=fred\", '=') = [\"" + splitFred[0] + "\", \"" + splitFred[1] + "\"]");
}
}

View File

@ -1,19 +0,0 @@
package RusticiSoftware.System.Text;
import java.io.UnsupportedEncodingException;
public class EncodingSupport {
private String coding = "utf-8";
public EncodingSupport(String coding) {
this.coding = coding;
}
public byte[] getBytes(String input) throws UnsupportedEncodingException {
return input.getBytes(coding);
}
public String getString() {
return coding;
}
}

View File

@ -1,24 +0,0 @@
package RusticiSoftware.System.Text;
public class StringBuilderSupport {
// In C# ensureCapacity returns the new capacity
public static int ensureCapacity(StringBuilder sb, int capacity) {
sb.ensureCapacity(capacity);
return sb.capacity();
}
// In C# setLength pads with spaces
public static void setLength(StringBuilder sb, int newLen) {
if (sb.length() >= newLen) {
sb.setLength(newLen);
}
sb.append(String.format("%1$-" + (newLen - sb.length()) + "s", ""));
}
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("hello");
System.out.println("**" + sb + "**");
StringBuilderSupport.setLength(sb,7);
System.out.println("**" + sb + "**");
}
}

View File

@ -28,6 +28,8 @@ import org.w3c.dom.*;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import RusticiSoftware.System.StringSupport;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@ -181,6 +183,19 @@ public class XmlNode implements Iterable {
return node.getTextContent().replace("\n", System.getProperty("line.separator"));
}
public boolean isEmptyElement()
{
if (StringSupport.IsEmptyOrBlank(node.getTextContent()) && getAttributes().size() == 0 && getChildNodes().size() == 0)
{
return true;
}
else
{
return false;
}
}
// This is a .Net extension to the DOM. It returns markup describing
// this node's children.
public String getInnerXml()