SWIG high-level binding now uses camelCase.

Updated SWIG binding to support Java high-level classes.

Simplified java/Makefile.am (but now, it needs to be reworked by an
autotools expert).

ColdFusion simple Java test compiles ok.
This commit is contained in:
Emmanuel Raviart 2004-08-29 23:57:46 +00:00
parent c0d276aa16
commit cd567ad391
7 changed files with 474 additions and 469 deletions

View File

@ -27,41 +27,27 @@ libjlasso_la_LDFLAGS = -no-undefined -avoid-version -module
javashare_DATA = lasso.jar
JAVA_JAR = lasso.jar
SWIG_OUTPUTS = $(JAVA_PATH)$(JAVA_MODULE).java $(JAVA_MODULE)_wrap.c $(JAVA_MODULE).java.in
SWIG_OUTPUTS = $(JAVA_PATH)$(JAVA_MODULE).java $(JAVA_MODULE)_wrap.c $(JAVA_MODULE)JNI.java
JAVA_CRUFT = $(JAVA_PATH)$(JAVA_MODULE).class $(JAVA_MODULE)_wrap.o \
$(JAVA_JAR) \
$(JAVA_PATH)$(JAVA_MODULE)JNI.java
$(JAVA_PATH)$(JAVA_MODULE).java
# The SWIG outputs are included in the distribution so SWIG is not
# required to use the Java interface
EXTRA_DIST = lasso-fragment.java $(SWIG_OUTPUTS)
EXTRA_DIST = $(SWIG_OUTPUTS)
CLEANFILES = $(JAVA_CRUFT)
MAINTAINERCLEANFILES = $(SWIG_OUTPUTS)
$(JAVA_MODULE)_wrap.c $(JAVA_MODULE).java.in: $(top_srcdir)/swig/Lasso.i
$(JAVA_MODULE)_wrap.c $(JAVA_MODULE).java: $(top_srcdir)/swig/Lasso.i
here=`pwd`; \
$(SWIG) -v -java -module $(JAVA_MODULE) -package $(JAVA_PACKAGE) -o $(JAVA_MODULE)_wrap.c $$here/$<; \
if test -r $(JAVA_MODULE)JNI.java; then \
echo "Fixing SWIG 1.3.15+ broken Java API"; \
rm -f $(JAVA_MODULE).java SWIGTYPE_*; \
sed -e 's/class $(JAVA_MODULE)JNI/public class $(JAVA_MODULE)/' $(JAVA_MODULE)JNI.java > $(JAVA_MODULE).java; \
sed -e 's/$(JAVA_MODULE)JNI/$(JAVA_MODULE)/g' $(JAVA_MODULE)_wrap.c > $(JAVA_MODULE)_wrap.c.new; \
rm -f $(JAVA_MODULE)_wrap.c $(JAVA_MODULE)JNI.java; \
mv $(JAVA_MODULE)_wrap.c.new $(JAVA_MODULE)_wrap.c; \
fi; \
mv $(JAVA_MODULE).java $(JAVA_MODULE).java.in
$(SWIG) -v -java -module $(JAVA_MODULE) -package $(JAVA_PACKAGE) -o $(JAVA_MODULE)_wrap.c $$here/$<
# FIXME There must be a better way to do this with SWIG
$(JAVA_PATH)$(JAVA_MODULE).java: $(JAVA_MODULE).java.in lasso-fragment.java
mkdir -p $(JAVA_PATH)
cd $(JAVA_PATH)
sed -e 's/^}//' $(JAVA_MODULE).java.in > $(JAVA_PATH)$(JAVA_MODULE).java.tmp
cat $(JAVA_PATH)$(JAVA_MODULE).java.tmp lasso-fragment.java > $@
echo "}" >> $@
rm -f $(JAVA_PATH)$(JAVA_MODULE).java.tmp
$(JAVA_PATH)$(JAVA_MODULE).java: $(JAVA_MODULE).java
mkdir -p $(JAVA_PATH)
test -f $(JAVA_PATH)$(JAVA_MODULE).java || cp *.java $(JAVA_PATH)
clean-local:
rm -f *.class
@ -70,13 +56,11 @@ clean-local:
all-local: $(JAVA_JAR)
$(JAVA_PATH)$(JAVA_MODULE).class: $(JAVA_PATH)$(JAVA_MODULE).java
mkdir -p $(JAVA_PATH)
test -f $(JAVA_PATH)$(JAVA_MODULE).java || cp $(srcdir)/$(JAVA_PATH)$(JAVA_MODULE).java $(JAVA_PATH)
$(JAVAC) $(JAVAC_FLAGS) $(JAVA_PATH)$(JAVA_MODULE).java
$(JAVAC) $(JAVAC_FLAGS) $(JAVA_PATH)*.java
$(JAVA_JAR): $(JAVA_PATH)$(JAVA_MODULE).class
rm -f $@
jar cf $@ $(JAVA_PATH)$(JAVA_MODULE).class
jar cf $@ $(JAVA_PATH)*.class
$(DEPDIR)/libjlasso_la-lasso_wrap.Plo:
mkdir -p $(DEPDIR)

View File

@ -26,7 +26,7 @@
* Simple wrapper for JLasso, to ease its use by ColdFusion applications.
*
* To use it:
* $ javac -classpath ../lasso-devel/java/target/lasso.jar CFLasso.java
* $ javac -classpath ../../lasso.jar CFLasso.java
* Edit ColdFusion file bin/jvm.config:
* - Add libjlasso.so directory to java.library.path variable.
* - Add classes directory to java.class.path variable.
@ -34,41 +34,41 @@
public class CFLasso {
protected com.entrouvert.lasso.LassoServer getServerContext() {
com.entrouvert.lasso.LassoServer serverContext = new com.entrouvert.lasso.LassoServer(
protected com.entrouvert.lasso.Server getServer() {
com.entrouvert.lasso.Server server = new com.entrouvert.lasso.Server(
"/home/manou/projects/lasso/lasso-devel/tests/data/sp1-la/metadata.xml'",
NULL, //"/home/manou/projects/lasso/lasso-devel/tests/data/sp1-la/public-key.pem",
null, //"/home/manou/projects/lasso/lasso-devel/tests/data/sp1-la/public-key.pem",
"/home/manou/projects/lasso/lasso-devel/tests/data/sp1-la/private-key-raw.pem",
"/home/manou/projects/lasso/lasso-devel/tests/data/sp1-la/certificate.pem",
com.entrouvert.lasso.Lasso.signatureMethodRsaSha1);
serverContext.addProvider(
com.entrouvert.lasso.lasso.signatureMethodRsaSha1);
server.addProvider(
"/home/manou/projects/lasso/lasso-devel/tests/data/idp1-la/metadata.xml",
"/home/manou/projects/lasso/lasso-devel/tests/data/idp1-la/public-key.pem",
"/home/manou/projects/lasso/lasso-devel/tests/data/ca1-la/certificate.pem");
return serverContext;
return server;
}
public String login(String relayState) {
com.entrouvert.lasso.LassoAuthnRequest authnRequest;
com.entrouvert.lasso.LassoLogin loginContext;
com.entrouvert.lasso.LassoServer serverContext;
com.entrouvert.lasso.AuthnRequest authnRequest;
com.entrouvert.lasso.Login login;
com.entrouvert.lasso.Server server;
String authnRequestUrl;
com.entrouvert.lasso.Lasso.init();
// com.entrouvert.lasso.lasso.init();
serverContext = getServerContext();
loginContext = new com.entrouvert.lasso.LassoLogin(serverContext, null);
loginContext.initAuthnRequest("https://idp1:1998/metadata");
authnRequest = (com.entrouvert.lasso.LassoAuthnRequest) loginContext.getRequest();
authnRequest.setPassive(false);
authnRequest.setNameIdPolicy(com.entrouvert.lasso.Lasso.libNameIdPolicyTypeFederated);
authnRequest.setConsent(com.entrouvert.lasso.Lasso.libConsentObtained);
server = getServer();
login = new com.entrouvert.lasso.Login(server);
login.initAuthnRequest(com.entrouvert.lasso.lasso.httpMethodRedirect);
authnRequest = login.getAuthnRequest();
authnRequest.setIsPassive(false);
authnRequest.setNameIdPolicy(com.entrouvert.lasso.lasso.libNameIdPolicyTypeFederated);
authnRequest.setConsent(com.entrouvert.lasso.lasso.libConsentObtained);
if (relayState != null)
authnRequest.setRelayState(relayState);
loginContext.buildAuthnRequestMsg();
authnRequestUrl = loginContext.getMsgUrl();
login.buildAuthnRequestMsg("https://sp1/metadata");
authnRequestUrl = login.getMsgUrl();
com.entrouvert.lasso.Lasso.shutdown();
// com.entrouvert.lasso.lasso.shutdown();
return authnRequestUrl;
}

View File

@ -1,21 +0,0 @@
// START lasso-fragment.java
//
// -*- Mode: java; c-basic-offset: 4 -*-
//
// lasso-fragment.java - Inserted Java fragment for generated SWIG code
//
// $Id$
//
static
{
// Load a library whose "core" name is 'jlasso'
// Operating system specific stuff will be added to make from this an
// actual filename: Under Unix this will become libjlasso.so
// while under Windows it will likely become something like
// jlasso.dll
System.loadLibrary("jlasso");
}
// END lasso-fragment.java

View File

@ -1,3 +1,5 @@
lasso.py
lasso_wrap.c
*.pyc
.deps
.libs

View File

@ -45,20 +45,20 @@ except NameError:
class ErrorCheckingTestCase(unittest.TestCase):
def test01(self):
try:
lasso.Login(None).msg_url
lasso.Login(None).msgUrl
except:
pass
def test02(self):
# Same as test01; replace Login by Logout
try:
lasso.Logout(None, lasso.providerTypeSp).msg_url
lasso.Logout(None, lasso.providerTypeSp).msgUrl
except:
pass
def test03(self):
# This time; we got something wrong as query string; we pass it to
# init_from_authn_request_msg; surely it shouldn't segfault
# initFromAuthnRequestMsg; surely it shouldn't segfault
server = lasso.Server(
os.path.join(dataDir, 'idp1-la/metadata.xml'),
None, # os.path.join(dataDir, 'idp1-la/public-key.pem') is no more used
@ -67,7 +67,7 @@ class ErrorCheckingTestCase(unittest.TestCase):
lasso.signatureMethodRsaSha1)
login = lasso.Login(server)
try:
login.init_from_authn_request_msg("", lasso.httpMethodRedirect)
login.initFromAuthnRequestMsg("", lasso.httpMethodRedirect)
except:
pass

View File

@ -44,7 +44,7 @@ except NameError:
class ServerTestCase(unittest.TestCase):
def test01(self):
"""Server construction, dump & new_from_dump."""
"""Server construction, dump & newFromDump."""
lassoServer = lasso.Server(
os.path.join(dataDir, 'sp1-la/metadata.xml'),
@ -52,22 +52,22 @@ class ServerTestCase(unittest.TestCase):
os.path.join(dataDir, 'sp1-la/private-key-raw.pem'),
os.path.join(dataDir, 'sp1-la/certificate.pem'),
lasso.signatureMethodRsaSha1)
lassoServer.add_provider(
lassoServer.addProvider(
os.path.join(dataDir, 'idp1-la/metadata.xml'),
os.path.join(dataDir, 'idp1-la/public-key.pem'),
os.path.join(dataDir, 'idp1-la/certificate.pem'))
dump = lassoServer.dump()
lassoServer2 = lassoServer.new_from_dump(dump)
lassoServer2 = lassoServer.newFromDump(dump)
dump2 = lassoServer2.dump()
self.failUnlessEqual(dump, dump2)
def test02(self):
"""Server construction without argument, dump & new_from_dump."""
"""Server construction without argument, dump & newFromDump."""
lassoServer = lasso.Server()
lassoServer.add_provider(os.path.join(dataDir, 'idp1-la/metadata.xml'))
lassoServer.addProvider(os.path.join(dataDir, 'idp1-la/metadata.xml'))
dump = lassoServer.dump()
lassoServer2 = lassoServer.new_from_dump(dump)
lassoServer2 = lassoServer.newFromDump(dump)
dump2 = lassoServer2.dump()
self.failUnlessEqual(dump, dump2)
@ -82,19 +82,19 @@ class LoginTestCase(unittest.TestCase):
os.path.join(dataDir, 'sp1-la/private-key-raw.pem'),
os.path.join(dataDir, 'sp1-la/certificate.pem'),
lasso.signatureMethodRsaSha1)
lassoServer.add_provider(
lassoServer.addProvider(
os.path.join(dataDir, 'idp1-la/metadata.xml'),
os.path.join(dataDir, 'idp1-la/public-key.pem'),
os.path.join(dataDir, 'idp1-la/certificate.pem'))
login = lasso.Login(lassoServer)
login.init_authn_request(lasso.httpMethodRedirect)
login.authn_request
login.authn_request.protocolProfile = lasso.libProtocolProfileBrwsArt
login.initAuthnRequest(lasso.httpMethodRedirect)
login.authnRequest
login.authnRequest.protocolProfile = lasso.libProtocolProfileBrwsArt
class LogoutTestCase(unittest.TestCase):
def test01(self):
"""SP logout without session and identity; testing init_request."""
"""SP logout without session and identity; testing initRequest."""
lassoServer = lasso.Server(
os.path.join(dataDir, 'sp1-la/metadata.xml'),
@ -102,22 +102,22 @@ class LogoutTestCase(unittest.TestCase):
os.path.join(dataDir, 'sp1-la/private-key-raw.pem'),
os.path.join(dataDir, 'sp1-la/certificate.pem'),
lasso.signatureMethodRsaSha1)
lassoServer.add_provider(
lassoServer.addProvider(
os.path.join(dataDir, 'idp1-la/metadata.xml'),
os.path.join(dataDir, 'idp1-la/public-key.pem'),
os.path.join(dataDir, 'idp1-la/certificate.pem'))
logout = lasso.Logout(lassoServer, lasso.providerTypeSp)
try:
logout.init_request()
logout.initRequest()
except RuntimeError, error:
errorCode = int(error.args[0].split(' ', 1)[0])
if errorCode != -1:
raise
else:
self.fail('logout.init_request without having set identity before should fail')
self.fail('logout.initRequest without having set identity before should fail')
def test02(self):
"""IDP logout without session and identity; testing logout.get_next_providerID."""
"""IDP logout without session and identity; testing logout.getNextProviderId."""
lassoServer = lasso.Server(
os.path.join(dataDir, 'idp1-la/metadata.xml'),
@ -125,17 +125,17 @@ class LogoutTestCase(unittest.TestCase):
os.path.join(dataDir, 'idp1-la/private-key-raw.pem'),
os.path.join(dataDir, 'idp1-la/certificate.pem'),
lasso.signatureMethodRsaSha1)
lassoServer.add_provider(
lassoServer.addProvider(
os.path.join(dataDir, 'sp1-la/metadata.xml'),
os.path.join(dataDir, 'sp1-la/public-key.pem'),
os.path.join(dataDir, 'sp1-la/certificate.pem'))
logout = lasso.Logout(lassoServer, lasso.providerTypeIdp)
self.failIf(logout.get_next_providerID())
self.failIf(logout.getNextProviderId())
class DefederationTestCase(unittest.TestCase):
def test01(self):
"""IDP initiated defederation; testing process_notification_msg with non Liberty query."""
"""IDP initiated defederation; testing processNotificationMsg with non Liberty query."""
lassoServer = lasso.Server(
os.path.join(dataDir, 'idp1-la/metadata.xml'),
@ -143,18 +143,18 @@ class DefederationTestCase(unittest.TestCase):
os.path.join(dataDir, 'idp1-la/private-key-raw.pem'),
os.path.join(dataDir, 'idp1-la/certificate.pem'),
lasso.signatureMethodRsaSha1)
lassoServer.add_provider(
lassoServer.addProvider(
os.path.join(dataDir, 'sp1-la/metadata.xml'),
os.path.join(dataDir, 'sp1-la/public-key.pem'),
os.path.join(dataDir, 'sp1-la/certificate.pem'))
defederation = lasso.Defederation(lassoServer, lasso.providerTypeIdp)
# The process_notification_msg should failt but not abort.
# The processNotificationMsg should failt but not abort.
try:
defederation.process_notification_msg('nonLibertyQuery=1', lasso.httpMethodRedirect)
defederation.processNotificationMsg('nonLibertyQuery=1', lasso.httpMethodRedirect)
except SyntaxError:
pass
else:
self.fail('Defederation process_notification_msg should have failed.')
self.fail('Defederation processNotificationMsg should have failed.')
suite1 = unittest.makeSuite(ServerTestCase, 'test')

File diff suppressed because it is too large Load Diff