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:
parent
c0d276aa16
commit
cd567ad391
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -1,3 +1,5 @@
|
|||
lasso.py
|
||||
lasso_wrap.c
|
||||
*.pyc
|
||||
.deps
|
||||
.libs
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
790
swig/Lasso.i
790
swig/Lasso.i
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue