Version | Date | Description |
---|---|---|
1.1.1 | 2006-11-15 | A micro bug fixes |
1.1.0 | 2006-08-28 | The second stable version 1.1.0 |
1.0.0 | 2006-05-30 | The first production/stable version 1.0 |
0.9.0 | 2006-04-24 | New Crispy Minor version. |
0.8.0 | 2006-03-13 | New Crispy Minor version. |
0.7.0 | 2006-01-16 | New Crispy Minor version. |
0.6.2 | 2005-11-28 | New Crispy Micro version. |
0.6.1 | 2005-10-18 | New Crispy Micro version (bug fixes released). |
0.6.0 | 2005-09-19 | New Crispy Minor version with new samples and extensions. |
0.5.0 | 2005-08-22 | New Crispy Minor version. |
0.4.0 | 2005-07-19 | New Crispy Minor version. |
0.3.3 | 2005-07-11 | First Version with a practical example, to validate Crispy. |
Type | Changes | By |
---|---|---|
By Getter/Setter-method from type java.lang.Object is losing the original type. Example: A Class with propery: setResult (Object value) List l = new ArrayList(); l.add("value"); myClass.setResult(l); After the Converter makeSimple and than makeComplex ist the type different from List (he is in this case HashSet). (Bug: 1595756). | lm | |
By execution a method with the DynamicProxy and a java.lang.Error is thrown, than get a ClassCastException. (Bug: 1595758). | lm |
Type | Changes | By |
---|---|---|
Business-Exception can wrapp validation-errors. The business/service method have one return value. If in the method are validation errors, then you can't send this errors from the server to the client. The plan is to use a Business-/ServiceException with setter/getter methods for errors (e.g set/get ValidationErrors as java.util.List, or so on). See a example on the homepage: Documentation/Importend Hints. (Feature Requests 1541327). | lm | |
For more performance, make the InvocationHandler stateless and can remove synchronized by method invoke (Feature Requests 1533022). | lm | |
Support for server side InterceptorHandler. Only supported from: RMI and Http invoker. (This experimental.) (Feature Request: 1517937). | lm | |
Send Exception from Server to the Clie nt. If the server is thrown a Exception (business exception too) then wrap the Exception and send the exception to the client. If the client know this exception, than throw it, else throw a InvocationException with the message from the server side exception. Only supported from: Http invoker, RMI, local calls, Burlap, Hessian, XML-RPC. (This experimental.) (Feature Request: 1513811). | lm | |
A Character Serializer for JAX-RPC to transport Character objects and primitive char. (Feature Request: 1499512). | lm | |
Extend the VectorTypeMappingFactory to flexible use all kinds of Collection or List. (Feature Request: 1542570). | lm | |
Integration from FindBugs (in maven) for better quality. (Feature Request: 1541984). | lm | |
Objects mit properties from type java.util.Properties can't convert with Converter.makeComplex. (Bug: 1541807). | lm | |
By XML-RPC can only java.util.Map with keys from type java.lang.String transported (see: http://ws.apache.org/xmlrpc/types.html). (Bug: 1538667). | lm | |
How bug Bug: 1536427. In a array, where added twice or more the same object, than is by the makeSimple method added one object and for the other object added the reference to this object. By the makeComplex are lost the references and the objects are null. (Bug: 1537833). | lm | |
If same objects are in a Map under different keys, than is one object in the map and the other objects are to reference (e.g. ~hashCode~28637909). The method makeComplex has a bad order to create the objects. The reference is read before the object is known. The result is a NullPointerException. (Bug: 1536427). | lm | |
Orthography bug: Invokation - Invocation: by InterceptorHandler, RmiInvokationHandler, MiniRmiServer, RmiExecutor, RmiInvokationHandlerTestImpl, build.xml (Bug: 1528188). | lm | |
Asynchronous calls are not synchronized. By JaxRpcExecuter are problems by switch from asynchronous to synchronous calls. (Bug: 1527923). | lm | |
NullPointerException in SimpleNameInterceptorFilter, if filter is activate for classes (FILTER_TYPE_CLASS) and a Exception is thrown, than is the current class equals null. (Bug: 1519771). | lm | |
Global Debug-Mode is overwriting from Properties. (Bug: 1512422). | lm | |
Class with two Collection and initial with empty Collection. After convert from complex to simple and back, one Collection is null. This Problem is by Collection and Map implementations. (Bug: 1509747). | lm | |
Converter.isValidEdge is missing the check of java.util.Date Converter.isValidEdge is missing the check of java.util.Date: If a Object with two getter method from type java.util.Date with the same value, ones of this values is after the remote call NULL (after convert transfer objects). (Bug: 1509295). | lm | |
Different classes, where the object have the same hashCode. Two objects (transfer objects) have the same hashCode. A third object from a different class have also the same hashCode. The Converter not detect th is problem. By Converter.makeComplex you get a InvocationTargetException. (Bug: 1508870). | lm | |
In Converter.makeComplex by Array Args with Maps in Array. (Bug: 1505994). | lm | |
Minor bugs in the documentation. (Bug: 1544524). | lm |
Type | Changes | By |
---|---|---|
Asynchronous communication. Remote invocation are asynchronous. The caller must don't wait of the end of the invocation. (Feature Request: 1481779). | lm | |
Replace commons-logging 1.0.4 with version 1.1. (Feature Request: 1488864). | lm | |
Replace commons-httpclient 3.0 with version 3.0.1. (Feature Request: 1488870). | lm | |
Replace Axis 1.2.1 with version 1.4 (Feature Request: 1496761). | lm | |
Properties for the ServiceManager must by Strings (Key and Value). If not, then get a Exception with the error message. (Feature Request: 1489506). | lm | |
The method invoke is implemented in DynamicJdkProxy and in CommonsProxyFactory. The method must be pull up to DynamicProxy. (Bug: 1476799). | lm | |
By setter-method with datatype java.util.Date and set a java.sql.Timestamp value, than can't the Converter convert right this value. With ServiceManager.DEBUG_MODE_ON = true, you can see the thrown Exception. Otherwise is the date value NULL. (Bug: 1488645). | lm | |
The Method JaxRpcExecutor.getDefaultUrlAndPort get always null. The right value is: JaxRpcExecutor.DEFAULT_URL_AND_PORT. (Bug: 1489460). | lm | |
MiniCorbaServer must twice call the start-method. Bad order by start the ORBD and the ORB. (Bug: 1490907). | lm | |
Invoker.invoke can't invoke method from private classes. This is a problem e.g. by inner classes. (Bug: 1497034). | lm | |
Clean internal structures. | lm |
Type | Changes | By |
---|---|---|
Not supported null values: If the transporter not supported null values (XML-RPC for example) than can substitute the null value with the Property.NULL_VALUE. (Feature Request: 1455311). | lm | |
Implementation of a new Crispy supported transport provider - CORBA implementation. (Feature Request: 1412215). | lm | |
Compare Setter- and Getter-Method by transfer-objects: For every Getter-Method must exist a Setter-Method. Otherwise are lost Data from Getter-Method, because no Setter-Method can't invoke. (Feature Request: 1457675). | lm | |
Can't create object, if constructor must get a parameter. For example: java.lang.Long -> constructors: Long(long value) or Long(String s). This bug occur in net.sf.crispy.impl.http.HttpServlet and net.sf.crispy.impl.rest.RestServlet. (Bug: 1455198). | lm | |
The NullPointerException in Invoker.findMethod is, if one parameter value is null. (Bug: 1455878). | lm | |
NullPointerException in JaxRpcExecutor if parameter is null. (Bug: 1456726). | lm | |
If getter-method without setter-method exist, then are transported data without benefit. (Bug: 1459261). | lm | |
If the transport value has a property with the length 0. The getter-method has no name (the name is only get) than throw the Converter a IndexOutOfBoundsException. (Bug: 1466331). | lm | |
Change RMI port from 1099 to 1098. With port 1099 is a conflict with the CORBA implementation. | lm |
Type | Changes | By |
---|---|---|
Filter for Interceptor ( net.sf.crispy.InterceptorFilter ). Interceptors can enabled/disabled with a Interceptor-Filter (Feature Request: 1421202). | lm | |
Set InvocationStrategy for a StaticProxy, to control eg.: the URL or lookup names, how by the DynamicProxy (Feature Request: 1407977). | lm | |
Test from thrown server side Exception: If on the server side a Exception thrown, than must send this Exception to the client. The client must of the Exception respond. (Feature Request: 1426254). | lm | |
New Crispy supported transport provider: Http-Serializer. This is for a pure Java to Java communicat ion. The transport protocol is http and the marshalling/unmarshalling is with the java.io.Serializable interface. The interface java.io.Serializable is not duty. With the net.sf.crispy.util.Converter can do everey Object serializable. This transport is by large transfer data high-performance. (Feature Request: 1442932). | lm | |
Lost Interceptor: After the first call, of the ServiceManager method createService, the second service haven't the Interceptors. (Bug: 1421204). | lm | |
After two calls from the createService - method, the ServiceManager get by the second call the same object. Every call from the createService - method must get a new Object. (Bug: 1425865). | lm | |
net.sf.crispy.util.Converter - private method getUniqueId. The method getUniqueId get not always a unique id. Problems are classes that has overwrite the hashCode method. (Bug: 1439704). | lm | |
Bad Error-Message bei new Instance in Converter-Class. In net.sf.crispy.util.Converter in the methode makeComplex. If a parameter object don't have constructor without parameter (clazz.newInstance()), then come a bad to understand error-message. (Bug: 1435281). | lm | |
Better performance for Converter: The net.sf.crispy.util.Converter method makeSimple and makeComplex are to expensive by much transfer objects or great object graphs. (Improvement: 1441022). | lm | |
The method makeComplexInternal has a problem by call setter method with assign from datatypes. For example: setter method expected a Set and the method get a Vector. (Bug: 1441713). | lm |
Type | Changes | By |
---|---|---|
Integrated Code Coverage by Clover for a better quality of the project. Find not tested sources from Crispy (Feature Request: 1376519). | lm | |
Crispy Extensions: A proposal for how can AOP and Crispy work together AspectJ (Feature Request: 1376520). | lm | |
Move compatibility kit from package net.sf.crispy.util.compatibility to test.crispy.compatibility . | lm | |
The method invocation is interruptable, with the flag InterceptorContext.setInterruptIncocation(true) . This is helpful by a client side security or by a client cache, where the remote methode don't execute. With the method InterceptorContext.setResult(value) can set the return value, without execute method (Feature Request: 1393621). | lm | |
New german Crispy article in the JavaSpektrum . | lm | |
Change XML-RPC from version 2.0 to version 2.0.1 (Feature Request: 1395795). | lm | |
Change commons-httpclient from version 2.0.2 to version 3.0 (Feature Request: 1395795). | lm | |
By use of the StaticProxy implementation (eg. StaticHessianProxy ) and to use a Interceptor (eg. StopWatchInterceptor ), to intercept th e method execution, you musted add DynamicProxy implementation. From now on, Crispy add autonomus the DynamicJdkProxy (Feature Request: 1403646). | lm |
Type | Changes | By |
---|---|---|
Crispy replace your own Proxy with Jakarta Commons Proxy. The configuration must replace the property Property.DYNAMIC_PROXY_CLASS from net.sf.crispy.impl.DynamicJdkProxy to Property.VALUE_FOR_JDK_DYNAMIC_PROXY and from net.sf.crispy.impl.DynamicCglibProxy to Property.VALUE_FOR_CGLIB_DYNAMIC_PROXY . | lm | |
Crispy Extensions: Integration for the PicoContainer . | lm | |
Crispy Extensions: Integration for the OSGi . | lm | |
Clean the main Crispy classes from the test services. Before you can use the test services with the MiniServer you must add the services with the addService(String serviceInterfaceName, String serviceImplName) . | lm |
Type | Changes | By |
---|---|---|
Crispy - Comic part two. | lm | |
Properties can load fr om file system with net.sf.crispy.PropertiesLoader (e.g. ClassPathPropertiesLoader, FilePropertiesLoader or UrlPropertiesLoader) . | lm | |
The net.sf.crispy.util.Converter has a improved cycle detection function for the parameter object graph. | lm | |
Bug fixes. | lm | |
Many new tests (size is over 250). | lm |
Type | Changes | By |
---|---|---|
Crispy has a Comic. | lm | |
New Example: Thesaurus lexicon (University of Leipzig, Germany). | lm | |
Crispy Extensions: Integration for the SpringFramework . | lm | |
Crispy Extensions: Integration for the HiveMind Framework . | lm | |
NullpointerException in net.sf.crispy.impl.JaxRpcExecutor. | lm | |
Minor bug fixes. | lm | |
Many new tests. | lm | |
More documentation. | lm | |
FAQs. | lm | |
Create a server simulation for local Java object calls: net.sf.cri spy.impl.local.MiniLocalObjectServer | lm |
Type | Changes | By |
---|---|---|
REST (REpresentational State Transfer), a pure Crispy implementation. | lm | |
Many new tests. | lm | |
Method net.sf.crispy.util.Converter.makeSimple find cycles in object graph. | lm | |
More documentation and the first article (in German) . | lm | |
More samples, to make the first steps with Crispy easy. | lm | |
A Servlet for the XML-RPC implementation ( net.sf.crispy.impl.xmlrpc.XmlRpcHttpServlet ). | lm |
Type | Changes | By |
---|---|---|
JBoss Remoting implementation for Crispy. Fixes 1237528. | lm | |
From net.sf.crispy.Executor the method setInvocationString(String) change to setInvocationStrategy (Object) . | lm | |
Change to CGlib-Version 2.1_2 . | lm | |
Change to XML-RPC-Version 2.0 . | lm | |
Many new tests. | lm | |
More documentation. | lm | |
PMD scans Crispy Java source code and looks for potential problems. | lm |