Skip to content

Commit

Permalink
Support CharSequence and ResourceBundle
Browse files Browse the repository at this point in the history
  • Loading branch information
mikaelstaldal committed Oct 18, 2006
1 parent 42de71a commit bb2aa3b
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 3 deletions.
2 changes: 2 additions & 0 deletions HISTORY
Expand Up @@ -134,3 +134,5 @@
1.6.3
-----
* haselement() function.
* Support CharSequence.
* Support ResourceBundle.
6 changes: 4 additions & 2 deletions docs/lspuser.html
Expand Up @@ -785,7 +785,7 @@ <h2>Passing parameters from Java to LSP</h2>
<tr><td>number</td><td><code>java.lang.Number</code><br/>(e.g.
<code>java.lang.Integer</code> or <code>java.lang.Dobule</code>)</td></tr>

<tr><td>string</td><td><code>java.lang.String</code><br/><code>char[]</code><br/>
<tr><td>string</td><td><code>java.lang.String</code><br/><code>java.lang.CharSequence</code><br/><code>char[]</code><br/>
<code>byte[]</code> (which is assumed to be encoded using ISO-8859-1)<br/>
<code>java.lang.Enum</code></td></tr>

Expand All @@ -799,7 +799,9 @@ <h2>Passing parameters from Java to LSP</h2>
<code>boolean[]</code><br/>
</td></tr>

<tr><td>tuple</td><td><code>java.util.Map</code> (only the <code>get(Object)</code> method with <code>java.lang.String</code> keys is used)</td></tr>
<tr><td>tuple</td><td><code>java.util.Map</code> (only the <code>get(Object)</code> method with <code>java.lang.String</code> keys is used)<br/>
<code>java.util.ResourceBundle</code>
</td></tr>

</table>

Expand Down
10 changes: 9 additions & 1 deletion src/nu/staldal/lsp/LSPPageBase.java
Expand Up @@ -211,7 +211,7 @@ protected static final LSPExtLib lookupExtensionHandler(Map extLibs, String nsUR

protected static Object convertObjectToLSP(Object value, String name)
throws LSPException
{
{
if (value == null)
throw new LSPException(name + ": LSP cannot handle null objects");
else if (value == Void.TYPE)
Expand Down Expand Up @@ -272,10 +272,18 @@ else if (value instanceof Object[])
else
return Arrays.asList(arr);
}
else if (value instanceof ResourceBundle)
{
return new ResourceBundleTuple((ResourceBundle)value);
}
else if (value instanceof java.sql.ResultSet)
{
return new LSPResultSetTupleList((java.sql.ResultSet)value);
}
else if (value instanceof CharSequence)
{
return value.toString();
}
else if (value instanceof Enum)
{
return value.toString();
Expand Down
138 changes: 138 additions & 0 deletions src/nu/staldal/lsp/wrapper/ResourceBundleTuple.java
@@ -0,0 +1,138 @@
/*
* Copyright (c) 2006, Mikael Ståldal
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the author nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* Note: This is known as "the modified BSD license". It's an approved
* Open Source and Free Software license, see
* http://www.opensource.org/licenses/
* and
* http://www.gnu.org/philosophy/license-list.html
*/

package nu.staldal.lsp.wrapper;

import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

/**
* Implementation of Map for a ResourceBundle.
*
* @author Mikael Ståldal
*/
public class ResourceBundleTuple implements Map
{
private final ResourceBundle rb;

/**
* Constructor.
*
* @param rb the ResourceBundle to wrap
*/
public ResourceBundleTuple(ResourceBundle rb)
{
this.rb = rb;
}

public Object get(Object key)
{
try {
return rb.getObject((String)key);
}
catch (MissingResourceException e)
{
return null;
}
}

public boolean containsKey(Object key)
{
try {
rb.getObject((String)key);
return true;
}
catch (MissingResourceException e)
{
return false;
}
}

public int size()
{
throw new UnsupportedOperationException();
}

public boolean isEmpty()
{
return size() == 0;
}

public boolean containsValue(Object value)
{
throw new UnsupportedOperationException();
}

public Object put(Object key, Object value)
{
throw new UnsupportedOperationException();
}

public Object remove(Object key)
{
throw new UnsupportedOperationException();
}

public void putAll(Map t)
{
throw new UnsupportedOperationException();
}

public void clear()
{
throw new UnsupportedOperationException();
}

public java.util.Set keySet()
{
throw new UnsupportedOperationException();
}

public java.util.Collection values()
{
throw new UnsupportedOperationException();
}

public java.util.Set entrySet()
{
throw new UnsupportedOperationException();
}
}

0 comments on commit bb2aa3b

Please sign in to comment.