Hi, I am getting the following error. The problem that i see is that PersistentMap is Hibernate's coounterpart for java.util.HashMap. If so, why am i getting the error?
ERROR [http-8443-Processor24] (BasicPropertyAccessor.java:62) - IllegalArgumentException in class: mod.sun.security.acl.AclImpl, setter method of property: allowedUsersTable
ERROR [http-8443-Processor24] (BasicPropertyAccessor.java:66) - expected type: java.util.HashMap, actual value: org.hibernate.collection.PersistentMap
ERROR [http-8443-Processor24] (StandardWrapperValve.java:253) - Servlet.service() for servlet action threw exception
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:40)
at org.hibernate.tuple.AbstractTuplizer.setPropertyValues(AbstractTuplizer.java:207)
at org.hibernate.tuple.PojoTuplizer.setPropertyValues(PojoTuplizer.java:176)
at org.hibernate.persister.entity.BasicEntityPersister.setPropertyValues(BasicEntityPersister.java:2919)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:225)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:160)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:95)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:96)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:468)
at org.hibernate.engine.Cascades$5.cascade(Cascades.java:154)
at org.hibernate.engine.Cascades.cascadeAssociation(Cascades.java:771)
at org.hibernate.engine.Cascades.cascade(Cascades.java:720)
at org.hibernate.engine.Cascades.cascade(Cascades.java:847)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:363)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:265)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:160)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:95)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:481)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:476)
at com.belfast.storage.dao.ObjectDataDAO.saveObject(ObjectDataDAO.java:50)
at com.belfast.storage.ObjectDataManager.storeObject(ObjectDataManager.java:21)
at com.belfast.storage.StorageManager.storeObjectInCloud(StorageManager.java:113)
at com.belfast.user.data.UploadFileAction.execute(UploadFileAction.java:122)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:613)
My code is as follows :
/*
* Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit
http://www.sun.com if you need additional information or
* have any questions.
*/
package mod.sun.security.acl;
import java.security.Principal;
import java.security.acl.Acl;
import java.security.acl.AclEntry;
import java.security.acl.Group;
import java.security.acl.NotOwnerException;
import java.security.acl.Permission;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.Vector;
import com.belfast.storage.object.ObjectData;
/**
* An Access Control List (ACL) is encapsulated by this class.
* @author Satish Dharmaraj
*/
public class AclImpl extends OwnerImpl implements Acl {
//
// Maintain four tables. one each for positive and negative
// ACLs. One each depending on whether the entity is a group
// or principal.
//
private long aclid;
private HashMap<Principal, AclEntry> allowedUsersTable =
new HashMap<Principal, AclEntry>(23);
private HashMap<Principal, AclEntry> allowedGroupsTable =
new HashMap<Principal, AclEntry>(23);
private HashMap<Principal, AclEntry> deniedUsersTable =
new HashMap<Principal, AclEntry>(23);
private HashMap<Principal, AclEntry> deniedGroupsTable =
new HashMap<Principal, AclEntry>(23);
private String aclName = null;
private Vector<Permission> zeroSet = new Vector<Permission>(1,1);
private ObjectData object;
and the mapping file is :
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="mod.sun.security.acl">
<class name="AclImpl" table="BEACL">
<id name="aclid" column="aclid">
<generator class="native"></generator>
</id>
<map name="allowedUsersTable" table="beaclentry">
<key column="aclentryid"></key>
<index-many-to-many column="principal" class="com.belfast.db.object.Alias"></index-many-to-many>
<one-to-many class="mod.sun.security.acl.AclEntryImpl"></one-to-many>
</map>
<map name="allowedGroupsTable" table="beaclentry">
<key column="aclentryid"></key>
<index-many-to-many column="principal" class="mod.sun.security.acl.GroupImpl"></index-many-to-many>
<one-to-many class="mod.sun.security.acl.AclEntryImpl"></one-to-many>
</map>
<map name="deniedUsersTable" table="beaclentry">
<key column="aclentryid"></key>
<index-many-to-many column="principal" class="com.belfast.db.object.Alias"></index-many-to-many>
<one-to-many class="mod.sun.security.acl.AclEntryImpl"></one-to-many>
</map>
<map name="deniedGroupsTable" table="beaclentry">
<key column="aclentryid"></key>
<index-many-to-many column="principal" class="mod.sun.security.acl.GroupImpl"></index-many-to-many>
<one-to-many class="mod.sun.security.acl.AclEntryImpl"></one-to-many>
</map>
<property name="aclName"></property>
<list name="zeroSet" inverse="false" cascade="all" table="BEPERM">
<key column="permid"/>
<index column="permission"></index>
<one-to-many class="mod.sun.security.acl.PermissionImpl"></one-to-many>
</list>
<one-to-one name="object" class="com.belfast.storage.object.ObjectData" constrained="true"/>
</class>
</hibernate-mapping>