You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(39) |
Dec
(10) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(19) |
Feb
(150) |
Mar
(10) |
Apr
|
May
(8) |
Jun
(11) |
Jul
(27) |
Aug
(52) |
Sep
(35) |
Oct
(30) |
Nov
(18) |
Dec
(4) |
2008 |
Jan
(76) |
Feb
(121) |
Mar
(39) |
Apr
(55) |
May
(18) |
Jun
(49) |
Jul
(32) |
Aug
(4) |
Sep
(10) |
Oct
|
Nov
(3) |
Dec
(33) |
2009 |
Jan
(19) |
Feb
(87) |
Mar
(69) |
Apr
(38) |
May
(47) |
Jun
(20) |
Jul
(5) |
Aug
(76) |
Sep
(145) |
Oct
(34) |
Nov
(8) |
Dec
(68) |
2010 |
Jan
(150) |
Feb
(379) |
Mar
(191) |
Apr
(100) |
May
(525) |
Jun
(269) |
Jul
(127) |
Aug
(190) |
Sep
(190) |
Oct
(29) |
Nov
(147) |
Dec
(83) |
2011 |
Jan
(188) |
Feb
(81) |
Mar
(43) |
Apr
(97) |
May
(63) |
Jun
(129) |
Jul
(17) |
Aug
(124) |
Sep
(6) |
Oct
(20) |
Nov
(67) |
Dec
(23) |
2012 |
Jan
(6) |
Feb
(14) |
Mar
(181) |
Apr
(64) |
May
(102) |
Jun
(47) |
Jul
(26) |
Aug
(3) |
Sep
(1) |
Oct
(14) |
Nov
(13) |
Dec
(23) |
2013 |
Jan
(4) |
Feb
(14) |
Mar
(18) |
Apr
(14) |
May
(27) |
Jun
(27) |
Jul
(5) |
Aug
(2) |
Sep
(74) |
Oct
(79) |
Nov
(21) |
Dec
(97) |
2014 |
Jan
(6) |
Feb
(3) |
Mar
(8) |
Apr
|
May
(5) |
Jun
|
Jul
(9) |
Aug
(6) |
Sep
(3) |
Oct
(10) |
Nov
(6) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
(25) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <fc...@us...> - 2008-02-25 13:24:49
|
Revision: 695 http://openutils.svn.sourceforge.net/openutils/?rev=695&view=rev Author: fcarone Date: 2008-02-25 05:24:54 -0800 (Mon, 25 Feb 2008) Log Message: ----------- Use name/value for entities Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java 2008-02-25 11:59:31 UTC (rev 694) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java 2008-02-25 13:24:54 UTC (rev 695) @@ -81,9 +81,9 @@ private Boolean deleted; @CollectionOfElements(fetch = FetchType.EAGER) - @org.hibernate.annotations.MapKey(columns = @Column(name = "REFERENCED_CLASS")) + @org.hibernate.annotations.MapKey(columns = @Column(name = "NAME")) @JoinTable(name = "SECRULE_ENTITY", joinColumns = {@JoinColumn(name = "ID_SECURITY_RULE") }) - @Column(name = "REFERENCED_ID", length = 60) + @Column(name = "VALUE", length = 60) @Fetch(FetchMode.SUBSELECT) private Map<String, String> entities; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-25 11:59:26
|
Revision: 694 http://openutils.svn.sourceforge.net/openutils/?rev=694&view=rev Author: fcarone Date: 2008-02-25 03:59:31 -0800 (Mon, 25 Feb 2008) Log Message: ----------- Tests updated Modified Paths: -------------- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml trunk/openutils-hibernate-security/src/test/resources/spring-security.xml Added Paths: ----------- trunk/openutils-hibernate-security/src/site/apt/ trunk/openutils-hibernate-security/src/site/apt/index.apt Added: trunk/openutils-hibernate-security/src/site/apt/index.apt =================================================================== --- trunk/openutils-hibernate-security/src/site/apt/index.apt (rev 0) +++ trunk/openutils-hibernate-security/src/site/apt/index.apt 2008-02-25 11:59:31 UTC (rev 694) @@ -0,0 +1,19 @@ + -------------------------- + O p e n u t i l s + -------------------------- + Filippo Carone + -------------------------- + +openutils-hibernate-security + + openutils-hibernate-security provides base generic hibernate security classes, implementing a role based access control + (RBAC) on data managed through hibernate. + + + See the test classes for how to setup security and look at {{{apidocs/index.html}javadocs}} for more details. + + +Released versions + + Check it at {{{http://www.mvnrepository.com/artifact/net.sourceforge.openutils/openutils-hibernate-security}http://www.mvnrepository.com/artifact/net.sourceforge.openutils/openutils-hibernate-security}} + Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java 2008-02-25 09:56:14 UTC (rev 693) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java 2008-02-25 11:59:31 UTC (rev 694) @@ -1,3 +1,18 @@ +/* + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package it.openutils.hibernate.security.filter; import it.openutils.hibernate.security.dataobject.ModifierEnum; @@ -3,4 +18,5 @@ import it.openutils.hibernate.security.dataobject.PermissionEnum; import it.openutils.hibernate.security.dataobject.SecurityRule; +import it.openutils.hibernate.security.dataobject.StatusEnum; import java.util.ArrayList; @@ -10,11 +26,6 @@ import org.junit.Assert; import org.junit.Test; - -/* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it - */ - /** * @author fcarone * @version $Id$ @@ -39,6 +50,7 @@ rule.setProperty("entity"); rule.setRole("ROLE_1"); rule.setValue("VALUE"); + rule.setStatus(StatusEnum.ENABLED); SecurityRule rule2 = new SecurityRule(); rule2.setEntity("it.openutils.hibernate.security.dataobject.SecurityRule"); @@ -49,6 +61,7 @@ rule2.setProperty("value"); rule2.setRole("ROLE_1"); rule2.setValue("VALUE2"); + rule2.setStatus(StatusEnum.ENABLED); SecurityRule rule2b = new SecurityRule(); rule2b.setEntity("it.openutils.hibernate.security.dataobject.SecurityRule"); @@ -57,6 +70,7 @@ rule2b.setProperty("id"); rule2b.setRole("ROLE_1"); rule2b.setValue("4"); + rule2b.setStatus(StatusEnum.ENABLED); SecurityRule rule3 = new SecurityRule(); rule3.setEntity("it.openutils.hibernate.security.dataobject.SecurityRule"); @@ -67,6 +81,7 @@ rule3.setProperty("value"); rule3.setRole("ROLE_2"); rule3.setValue("VALUE3"); + rule3.setStatus(StatusEnum.ENABLED); rules.add(rule); rules.add(rule2); Modified: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2008-02-25 09:56:14 UTC (rev 693) +++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2008-02-25 11:59:31 UTC (rev 694) @@ -119,6 +119,8 @@ <column>PROPERTY</column> <column>VALUE</column> <column>MODIFIER</column> + <column>STATUS</column> + <column>DELETED</column> <row> <value>1</value> <value>RoleUno</value> @@ -126,6 +128,8 @@ <value>intValue</value> <value>1</value> <value>EQUALS</value> + <value>ENABLED</value> + <value>0</value> </row> <row> <value>2</value> @@ -134,6 +138,8 @@ <value>intValue</value> <value>1</value> <value>EQUALS</value> + <value>ENABLED</value> + <value>0</value> </row> <row> <value>3</value> @@ -142,7 +148,19 @@ <value>intValue</value> <value>1</value> <value>NOT</value> + <value>ENABLED</value> + <value>0</value> </row> + <row> + <value>4</value> + <value>RoleTre</value> + <value>it.openutils.hibernate.security.apptest.DummyDataobject</value> + <value>intValue</value> + <value>1</value> + <value>NOT</value> + <value>ENABLED</value> + <value>1</value> + </row> </table> <table name="SECRULE_PERMISSION"> <column>ID_SECURITY_RULE</column> Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2008-02-25 09:56:14 UTC (rev 693) +++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2008-02-25 11:59:31 UTC (rev 694) @@ -62,7 +62,6 @@ </property> </bean> - <bean id="afterInvocationManager" class="org.acegisecurity.afterinvocation.AfterInvocationProviderManager"> <property name="providers"> <list> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-25 09:56:09
|
Revision: 693 http://openutils.svn.sourceforge.net/openutils/?rev=693&view=rev Author: fcarone Date: 2008-02-25 01:56:14 -0800 (Mon, 25 Feb 2008) Log Message: ----------- Copyright updated Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java 2008-02-25 09:56:14 UTC (rev 693) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.dao; Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java 2008-02-25 09:56:14 UTC (rev 693) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.dao.impl; Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java 2008-02-25 09:56:14 UTC (rev 693) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.dataobject; Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java 2008-02-25 09:56:14 UTC (rev 693) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.dataobject; @@ -24,7 +36,7 @@ this.value = value; } - + /** * Returns the value. * @return the value Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java 2008-02-25 09:56:14 UTC (rev 693) @@ -5,6 +5,7 @@ import java.io.Serializable; import java.util.List; +import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; @@ -21,6 +22,10 @@ import org.hibernate.annotations.CollectionOfElements; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import org.hibernate.annotations.Filter; +import org.hibernate.annotations.FilterDef; +import org.hibernate.annotations.FilterDefs; +import org.hibernate.annotations.Filters; import org.apache.commons.lang.builder.ToStringBuilder; @@ -30,6 +35,8 @@ */ @Entity @Table(name = "SECURITY_RULE") +@FilterDefs({@FilterDef(name = "notDeletedRules", defaultCondition = "DELETED != '1'") }) +@Filters({@Filter(name = "notDeletedRules") }) public class SecurityRule implements Serializable { @@ -66,6 +73,20 @@ @Fetch(FetchMode.SUBSELECT) private List<PermissionEnum> permissions; + @Enumerated(EnumType.STRING) + @Column(name = "STATUS", nullable = false) + private StatusEnum status; + + @Column(name = "DELETED", length = 1, nullable = false) + private Boolean deleted; + + @CollectionOfElements(fetch = FetchType.EAGER) + @org.hibernate.annotations.MapKey(columns = @Column(name = "REFERENCED_CLASS")) + @JoinTable(name = "SECRULE_ENTITY", joinColumns = {@JoinColumn(name = "ID_SECURITY_RULE") }) + @Column(name = "REFERENCED_ID", length = 60) + @Fetch(FetchMode.SUBSELECT) + private Map<String, String> entities; + /** * Returns the role. * @return the role @@ -209,4 +230,72 @@ .toString(); } + /** + * Returns the status. + * @return the status + */ + public StatusEnum getStatus() + { + return status; + } + + /** + * Sets the status. + * @param status the status to set + */ + public void setStatus(StatusEnum status) + { + this.status = status; + } + + /** + * @return True if the rule is enabled + */ + public boolean isEnabled() + { + if (status == null) + { + return false; + } + return status.equals(StatusEnum.ENABLED); + } + + /** + * Returns the entities. + * @return the entities + */ + public Map<String, String> getEntities() + { + return entities; + } + + /** + * Sets the entities. + * @param entities the entities to set + */ + public void setEntities(Map<String, String> entities) + { + this.entities = entities; + } + + + /** + * Returns the deleted. + * @return the deleted + */ + public Boolean getDeleted() + { + return deleted; + } + + + /** + * Sets the deleted. + * @param deleted the deleted to set + */ + public void setDeleted(Boolean deleted) + { + this.deleted = deleted; + } + } Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-25 09:56:14 UTC (rev 693) @@ -92,6 +92,11 @@ Map<String, List<SecurityRule>> roleRuleMap = new LinkedHashMap<String, List<SecurityRule>>(); for (SecurityRule securityRule : securityRules) { + if (!securityRule.isEnabled()) + { + continue; + } + if (!roleRuleMap.containsKey(securityRule.getRole())) { roleRuleMap.put(securityRule.getRole(), new ArrayList<SecurityRule>()); Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java 2008-02-25 09:56:14 UTC (rev 693) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.filter; Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-25 09:26:33 UTC (rev 692) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-25 09:56:14 UTC (rev 693) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.services; @@ -41,10 +53,9 @@ SecurityRule loadIfAvailable(Long id); /** - * @param id The security rule id - * @return The removed {@link SecurityRule} + * @param securityRule The security rule to remove */ - boolean delete(Long id); + void delete(SecurityRule securityRule); /** * @param securityRule The {@link SecurityRule} to save or update This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 692 http://openutils.svn.sourceforge.net/openutils/?rev=692&view=rev Author: fcarone Date: 2008-02-25 01:26:33 -0800 (Mon, 25 Feb 2008) Log Message: ----------- for rule deletion set rule.deleted = true Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-25 09:25:03 UTC (rev 691) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-25 09:26:33 UTC (rev 692) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.services.impl; @@ -77,9 +89,10 @@ /** * {@inheritDoc} */ - public boolean delete(Long id) + public void delete(SecurityRule securityRule) { - return securityRuleDAO.delete(id); + securityRule.setDeleted(true); + securityRuleDAO.update(securityRule); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-25 09:24:59
|
Revision: 691 http://openutils.svn.sourceforge.net/openutils/?rev=691&view=rev Author: fcarone Date: 2008-02-25 01:25:03 -0800 (Mon, 25 Feb 2008) Log Message: ----------- Only use enabled rules Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java 2008-02-25 09:23:12 UTC (rev 690) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java 2008-02-25 09:25:03 UTC (rev 691) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.filter.utils; @@ -47,6 +59,11 @@ String attribute = ((ConfigAttribute) iterator.next()).getAttribute(); for (SecurityRule rule : rules) { + if (!rule.isEnabled()) + { + log.debug("Skipping disabled rule {}", rule); + continue; + } for (PermissionEnum permission : rule.getPermissions()) { if (StringUtils.equals(permission.getValue(), attribute)) @@ -73,6 +90,10 @@ { for (SecurityRule rule : rules) { + if (!rule.isEnabled()) + { + continue; + } String objProperty = BeanUtils.getSimpleProperty(argument, rule.getProperty()); switch (rule.getModifier()) { @@ -89,7 +110,7 @@ log.debug("Matching rule found: {}", rule); return true; } - break; + break; default: throw new RuntimeException("Modifier " + rule.getModifier() + " is not recognized"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-25 09:23:21
|
Revision: 690 http://openutils.svn.sourceforge.net/openutils/?rev=690&view=rev Author: fcarone Date: 2008-02-25 01:23:12 -0800 (Mon, 25 Feb 2008) Log Message: ----------- new config variable for denyIfNoRulesFound added Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java 2008-02-25 09:19:55 UTC (rev 689) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java 2008-02-25 09:23:12 UTC (rev 690) @@ -36,6 +36,7 @@ { private SecurityRuleManager securityRuleManager; + private boolean denyIfNoRulesFound = true; /** * {@inheritDoc} @@ -49,6 +50,7 @@ return null; } SecurityRulePredicate predicate = new SecurityRulePredicate(authentication, config, securityRuleManager); + predicate.setDenyIfNoRulesFound(denyIfNoRulesFound ); if (returnedObject instanceof Collection) { @@ -76,4 +78,14 @@ this.securityRuleManager = securityRuleManager; } + + /** + * Sets the denyIfNoRulesFound. + * @param denyIfNoRulesFound the denyIfNoRulesFound to set + */ + public void setDenyIfNoRulesFound(boolean denyIfNoRulesFound) + { + this.denyIfNoRulesFound = denyIfNoRulesFound; + } + } Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-25 09:19:55 UTC (rev 689) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-25 09:23:12 UTC (rev 690) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.filter; @@ -31,6 +43,8 @@ private SecurityRuleUtils ruleUtils = new SecurityRuleUtils(); + private boolean denyIfNoRulesFound = true; + /** * @param authentication The current authentication * @param configAttribute The config attribute of the current method invocation interceptor @@ -59,13 +73,19 @@ // denyAll by default if (rules == null || rules.isEmpty()) { - return false; + if (denyIfNoRulesFound ) + { + return false; + } + else + { + return true; + } } return (ruleUtils.checkPermissions(rules, configAttribute) && ruleUtils.checkRules(rules, object)); } @SuppressWarnings("unchecked") - // @todo: needs unit test methods private List<SecurityRule> findAllRules(Object object, List<String> roles) { List<SecurityRule> result = new ArrayList<SecurityRule>(); @@ -82,4 +102,14 @@ return result; } + + /** + * Sets the denyIfNoRulesFound. + * @param denyIfNoRulesFound the denyIfNoRulesFound to set + */ + public void setDenyIfNoRulesFound(boolean denyIfNoRulesFound) + { + this.denyIfNoRulesFound = denyIfNoRulesFound; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 689 http://openutils.svn.sourceforge.net/openutils/?rev=689&view=rev Author: fcarone Date: 2008-02-25 01:19:55 -0800 (Mon, 25 Feb 2008) Log Message: ----------- ABSTAIN if no rules found Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java 2008-02-25 09:17:52 UTC (rev 688) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java 2008-02-25 09:19:55 UTC (rev 689) @@ -32,6 +32,10 @@ /** * @author fcarone * @version $Id$ + * + * This voter looks for rules based on the given object and votes ACCESS_ABSTAIN if no rules are found, ACCESS_DENIED + * if rules do not match, ACCESS_GRANTED otherwise. + * */ public class SecurityRuleAccessDecisionVoter extends SecurityRuleBaseHandler implements AccessDecisionVoter { @@ -59,21 +63,19 @@ { log.debug("Evaluating argument {}", argument); List<SecurityRule> rules = securityRuleManager.getRulesForRoles(ruleUtils.getClassName(argument), roles); - boolean permissionMatches = ruleUtils.checkPermissions(rules, config); - if (!permissionMatches) + if (rules == null || rules.isEmpty()) { - return ACCESS_DENIED; + continue; } - - boolean areRulesMatching = ruleUtils.checkRules(rules, argument); - if (!areRulesMatching) + if (ruleUtils.checkPermissions(rules, config) && ruleUtils.checkRules(rules, argument)) { - return ACCESS_DENIED; + return ACCESS_GRANTED; } + return ACCESS_DENIED; } } - return ACCESS_GRANTED; + return ACCESS_ABSTAIN; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-25 09:17:50
|
Revision: 688 http://openutils.svn.sourceforge.net/openutils/?rev=688&view=rev Author: fcarone Date: 2008-02-25 01:17:52 -0800 (Mon, 25 Feb 2008) Log Message: ----------- Status enum added Added Paths: ----------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/StatusEnum.java Added: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/StatusEnum.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/StatusEnum.java (rev 0) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/StatusEnum.java 2008-02-25 09:17:52 UTC (rev 688) @@ -0,0 +1,46 @@ +/* + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package it.openutils.hibernate.security.dataobject; + + +/** + * @author fcarone + * @version $Id: $ + */ +public enum StatusEnum { + + /** + * Enabled + */ + ENABLED("enabled"), + + /** + * Disabled + */ + DISABLED("disabled"); + + private String value; + + private StatusEnum(String value) + { + this.value = value; + } + + public String getValue() + { + return value; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-25 09:15:42
|
Revision: 687 http://openutils.svn.sourceforge.net/openutils/?rev=687&view=rev Author: fcarone Date: 2008-02-25 01:15:35 -0800 (Mon, 25 Feb 2008) Log Message: ----------- new config variable for denyIfNoRulesFound added Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-22 16:13:02 UTC (rev 686) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-25 09:15:35 UTC (rev 687) @@ -48,6 +48,8 @@ */ private Logger log = LoggerFactory.getLogger(AOPSecurity.class); + private boolean denyIfNoRulesFound = true; + private SecurityRuleManager securityRuleManager; private List<String> securedDAOs; @@ -105,11 +107,20 @@ grantedRoles += authorities[i].getAuthority() + " "; } log.warn( - "No rules found. Access is denied on " + entity + ", for user {} with roles {}", + "No rules found for " + entity + ", user {} with roles {}", SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString(), grantedRoles); } - throw new SecurityException("Access denied"); + if (denyIfNoRulesFound) + { + log.debug("denyIfNoRulesFound is true, denying access."); + throw new SecurityException("Access denied"); + } + else + { + log.debug("denyIfNoRulesFound is false, allowing access."); + return pjp.proceed(); + } } Filter hibernateFilter = securityRuleManager.getEntityFilterFromRules(entity, rules); @@ -151,4 +162,14 @@ { this.enabled = enabled; } + + + /** + * Sets the denyIfNoRulesFound. + * @param denyIfNoRulesFound the denyIfNoRulesFound to set + */ + public void setDenyIfNoRulesFound(boolean denyIfNoRulesFound) + { + this.denyIfNoRulesFound = denyIfNoRulesFound; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 686 http://openutils.svn.sourceforge.net/openutils/?rev=686&view=rev Author: fcarone Date: 2008-02-22 08:13:02 -0800 (Fri, 22 Feb 2008) Log Message: ----------- Abstain access if no rules have been found Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java 2008-02-21 21:04:03 UTC (rev 685) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java 2008-02-22 16:13:02 UTC (rev 686) @@ -1,5 +1,17 @@ /* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package it.openutils.hibernate.security.filter; @@ -48,12 +60,9 @@ List<Object> objectArrayList = Arrays.asList(objectArray); CollectionUtils.filter(objectArrayList, predicate); } - else + else if (!predicate.evaluate(returnedObject)) { - if (!predicate.evaluate(returnedObject)) - { - throw new AccessDeniedException("Access denied"); - } + throw new AccessDeniedException("Access denied"); } return returnedObject; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fg...@us...> - 2008-02-21 21:04:31
|
Revision: 685 http://openutils.svn.sourceforge.net/openutils/?rev=685&view=rev Author: fgiust Date: 2008-02-21 13:04:03 -0800 (Thu, 21 Feb 2008) Log Message: ----------- [maven-release-plugin] prepare for next development iteration Modified Paths: -------------- trunk/openutils-dbmigration/pom.xml Modified: trunk/openutils-dbmigration/pom.xml =================================================================== --- trunk/openutils-dbmigration/pom.xml 2008-02-21 21:03:49 UTC (rev 684) +++ trunk/openutils-dbmigration/pom.xml 2008-02-21 21:04:03 UTC (rev 685) @@ -8,7 +8,7 @@ </parent> <artifactId>openutils-dbmigration</artifactId> <name>openutils db migration</name> - <version>2.0.3</version> + <version>2.0.4-SNAPSHOT</version> <description /> <dependencies> <dependency> @@ -93,10 +93,4 @@ <properties> <spring.version>2.5.1</spring.version> </properties> - - <scm> - <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-dbmigration-2.0.3</connection> - <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-dbmigration-2.0.3</developerConnection> - <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-dbmigration-2.0.3</url> - </scm> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fg...@us...> - 2008-02-21 21:03:47
|
Revision: 684 http://openutils.svn.sourceforge.net/openutils/?rev=684&view=rev Author: fgiust Date: 2008-02-21 13:03:49 -0800 (Thu, 21 Feb 2008) Log Message: ----------- [maven-release-plugin] copy for tag openutils-dbmigration-2.0.3 Added Paths: ----------- tags/openutils-dbmigration-2.0.3/ tags/openutils-dbmigration-2.0.3/pom.xml tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java tags/openutils-dbmigration-2.0.3/src/site/changes/changes.xml Removed Paths: ------------- tags/openutils-dbmigration-2.0.3/pom.xml tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java tags/openutils-dbmigration-2.0.3/src/site/changes/changes.xml Copied: tags/openutils-dbmigration-2.0.3 (from rev 681, trunk/openutils-dbmigration) Deleted: tags/openutils-dbmigration-2.0.3/pom.xml =================================================================== --- trunk/openutils-dbmigration/pom.xml 2008-02-21 14:57:33 UTC (rev 681) +++ tags/openutils-dbmigration-2.0.3/pom.xml 2008-02-21 21:03:49 UTC (rev 684) @@ -1,96 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils</artifactId> - <version>7</version> - <relativePath>..</relativePath> - </parent> - <artifactId>openutils-dbmigration</artifactId> - <name>openutils db migration</name> - <version>2.0.3-SNAPSHOT</version> - <description /> - <dependencies> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.3</version> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>1.3</version> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>1.4.1</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl104-over-slf4j</artifactId> - <version>1.4.1</version> - </dependency> - <dependency> - <groupId>org.apache.poi</groupId> - <artifactId>poi</artifactId> - <version>3.0-FINAL</version> - <optional>true</optional> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.testng</groupId> - <artifactId>testng</artifactId> - <classifier>jdk15</classifier> - <version>5.1</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - <properties> - <spring.version>2.5.1</spring.version> - </properties> -</project> \ No newline at end of file Copied: tags/openutils-dbmigration-2.0.3/pom.xml (from rev 683, trunk/openutils-dbmigration/pom.xml) =================================================================== --- tags/openutils-dbmigration-2.0.3/pom.xml (rev 0) +++ tags/openutils-dbmigration-2.0.3/pom.xml 2008-02-21 21:03:49 UTC (rev 684) @@ -0,0 +1,102 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils</artifactId> + <version>7</version> + <relativePath>..</relativePath> + </parent> + <artifactId>openutils-dbmigration</artifactId> + <name>openutils db migration</name> + <version>2.0.3</version> + <description /> + <dependencies> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.3</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.3</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.4.1</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl104-over-slf4j</artifactId> + <version>1.4.1</version> + </dependency> + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi</artifactId> + <version>3.0-FINAL</version> + <optional>true</optional> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.testng</groupId> + <artifactId>testng</artifactId> + <classifier>jdk15</classifier> + <version>5.1</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </exclusion> + </exclusions> + </dependency> + </dependencies> + <properties> + <spring.version>2.5.1</spring.version> + </properties> + + <scm> + <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-dbmigration-2.0.3</connection> + <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-dbmigration-2.0.3</developerConnection> + <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-dbmigration-2.0.3</url> + </scm> +</project> \ No newline at end of file Deleted: tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java =================================================================== --- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java 2008-02-21 14:57:33 UTC (rev 681) +++ tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java 2008-02-21 21:03:49 UTC (rev 684) @@ -1,134 +0,0 @@ -/* - * Copyright Openmind http://www.openmindonline.it - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package it.openutils.migration.oracle; - -import it.openutils.migration.task.setup.DbTask; - -import java.text.MessageFormat; -import java.util.List; - -import javax.sql.DataSource; - -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; - - -/** - * Db tasks that handles the initial setup of sequences. - * @author fgiust - * @version $Id$ - */ -public class OracleSequenceCreationTask implements DbTask -{ - - /** - * Logger. - */ - private Logger log = LoggerFactory.getLogger(OracleSequenceCreationTask.class); - - private List<String> sequences; - - private String creationQuery; - - private String selectUserSequences; - - private String selectAllSequences; - - private int startsWith; - - /** - * Sets the sequences. - * @param sequences the sequences to set - */ - public void setSequences(List<String> sequences) - { - this.sequences = sequences; - } - - /** - * Sets the creationQuery. - * @param creationQuery the creationQuery to set - */ - public void setCreationQuery(String creationQuery) - { - this.creationQuery = creationQuery; - } - - /** - * Sets the selectAllSequences. - * @param selectAllSequences the selectAllSequences to set - */ - public void setSelectAllSequences(String selectAllSequences) - { - this.selectAllSequences = selectAllSequences; - } - - /** - * Sets the startsWith. - * @param startsWith the startsWith to set - */ - public void setStartsWith(int startsWith) - { - this.startsWith = startsWith; - } - - /** - * Sets the selectUserSequences. - * @param selectUserSequences the selectUserSequences to set - */ - public void setSelectUserSequences(String selectUserSequences) - { - this.selectUserSequences = selectUserSequences; - } - - /** - * {@inheritDoc} - */ - public String getDescription() - { - return "Checking Sequences"; - } - - /** - * {@inheritDoc} - */ - public void execute(DataSource dataSource) - { - SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource); - for (String sequenceName : sequences) - { - int result = 0; - - if (StringUtils.contains(sequenceName, ".")) - { - String[] tokens = StringUtils.split(sequenceName, "."); - result = jdbcTemplate.queryForInt(selectAllSequences, new Object[]{tokens[1], tokens[0]}); - } - else - { - result = jdbcTemplate.queryForInt(selectUserSequences, sequenceName); - } - - if (result <= 0) - { - log.info("Creating new {}", sequenceName); - jdbcTemplate.update(MessageFormat.format(creationQuery, new Object[]{sequenceName, startsWith})); - } - } - } -} \ No newline at end of file Copied: tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java (from rev 682, trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java) =================================================================== --- tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java (rev 0) +++ tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java 2008-02-21 21:03:49 UTC (rev 684) @@ -0,0 +1,145 @@ +/* + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package it.openutils.migration.oracle; + +import it.openutils.migration.task.setup.DbTask; + +import java.text.MessageFormat; +import java.util.List; + +import javax.sql.DataSource; + +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; + + +/** + * Db tasks that handles the initial setup of sequences. + * @author fgiust + * @version $Id$ + */ +public class OracleSequenceCreationTask implements DbTask +{ + + /** + * Logger. + */ + private Logger log = LoggerFactory.getLogger(OracleSequenceCreationTask.class); + + private List<String> sequences; + + private String creationQuery; + + private String dropQuery; + + private String selectUserSequences; + + private String selectAllSequences; + + private int startsWith; + + /** + * Sets the sequences. + * @param sequences the sequences to set + */ + public void setSequences(List<String> sequences) + { + this.sequences = sequences; + } + + /** + * Sets the creationQuery. + * @param creationQuery the creationQuery to set + */ + public void setCreationQuery(String creationQuery) + { + this.creationQuery = creationQuery; + } + + /** + * Sets the dropQuery. + * @param dropQuery the dropQuery to set + */ + public void setDropQuery(String dropQuery) + { + this.dropQuery = dropQuery; + } + + /** + * Sets the selectAllSequences. + * @param selectAllSequences the selectAllSequences to set + */ + public void setSelectAllSequences(String selectAllSequences) + { + this.selectAllSequences = selectAllSequences; + } + + /** + * Sets the startsWith. + * @param startsWith the startsWith to set + */ + public void setStartsWith(int startsWith) + { + this.startsWith = startsWith; + } + + /** + * Sets the selectUserSequences. + * @param selectUserSequences the selectUserSequences to set + */ + public void setSelectUserSequences(String selectUserSequences) + { + this.selectUserSequences = selectUserSequences; + } + + /** + * {@inheritDoc} + */ + public String getDescription() + { + return "Checking Sequences"; + } + + /** + * {@inheritDoc} + */ + public void execute(DataSource dataSource) + { + SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource); + for (String sequenceName : sequences) + { + int result = 0; + + if (StringUtils.contains(sequenceName, ".")) + { + String[] tokens = StringUtils.split(sequenceName, "."); + result = jdbcTemplate.queryForInt(selectAllSequences, new Object[]{tokens[1], tokens[0]}); + } + else + { + result = jdbcTemplate.queryForInt(selectUserSequences, sequenceName); + } + + if (result <= 0) + { + log.info("Creating new {}", sequenceName); + jdbcTemplate.update(MessageFormat.format(creationQuery, new Object[]{sequenceName, startsWith})); + } + } + } +} \ No newline at end of file Copied: tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java (from rev 682, trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java) =================================================================== --- tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java (rev 0) +++ tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java 2008-02-21 21:03:49 UTC (rev 684) @@ -0,0 +1,242 @@ +package it.openutils.migration.oracle; + +import it.openutils.migration.task.setup.DbTask; + +import java.io.IOException; +import java.io.InputStream; +import java.text.MessageFormat; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.sql.DataSource; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.Resource; +import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; + + +/** + * <p> + * Db tasks that handles the initial setup of views. + * </p> + * <p> + * Limitations: + * </p> + * <ol> + * <li> * not supported in field list</li> + * <li> fields must be enclosed in quotes</li> + * </ol> + * @author albertoq + * @version $Id$ + */ +public class OracleViewCreateOrUpdateTask implements DbTask +{ + + /** + * Logger. + */ + private Logger log = LoggerFactory.getLogger(OracleViewCreateOrUpdateTask.class); + + /** + * Script list to execute + */ + protected List<Resource> scripts; + + /** + * Query to verify view existence + */ + private String selectUserViewExistence; + + /** + * Query to retrieve view ddl + */ + private String selectUserViewDDL; + + /** + * Statement to drop a view + */ + private String dropView; + + /** + * {@inheritDoc} + */ + public void execute(DataSource dataSource) + { + + SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource); + for (Resource script : scripts) + { + String viewName = this.objectNameFromFileName(script); + + int result = jdbcTemplate.queryForInt(getSelectUserViewExistence(), viewName); + + String scriptContent = readFully(script); + + if (scriptContent == null) + { + continue; + } + + if (result == 0) + { + log.info("View {} not existing. Creating new view", viewName); + + createView(jdbcTemplate, scriptContent); + } + else + { + String scriptBody = extractViewBody(scriptContent); + if (scriptBody == null) + { + continue; + } + + String previousDDl = (String) jdbcTemplate.getJdbcOperations().queryForObject( + getSelectUserViewDDL(), + new Object[]{viewName}, + String.class); + + if (!StringUtils.equals(previousDDl.trim(), scriptBody.trim())) + { + log.info( + "Previous definition of view {} differs from actual. Dropping and recreating view", + new Object[]{viewName}); + + jdbcTemplate.update(MessageFormat.format(getDropView(), new Object[]{viewName})); + + createView(jdbcTemplate, scriptContent); + } + } + } + + } + + /** + * @param script The script resource + * @return The script name + */ + protected String objectNameFromFileName(Resource script) + { + return StringUtils.substringBeforeLast(script.getFilename(), "."); + } + + /** + * @param scriptContent + * @return + */ + private String extractViewBody(String scriptContent) + { + Pattern pattern = Pattern.compile(".*\\s+AS\\s+(.*)", Pattern.CASE_INSENSITIVE | Pattern.DOTALL); + Matcher matcher = pattern.matcher(scriptContent); + boolean bodyFound = matcher.find(); + if (bodyFound) + { + return matcher.group(1); + } + else + { + return null; + } + } + + /** + * @param jdbcTemplate + * @param script + * @return + */ + private void createView(SimpleJdbcTemplate jdbcTemplate, String script) + { + + String[] ddls = StringUtils.split(script, ";"); + + for (String ddl : ddls) + { + if (StringUtils.isNotBlank(ddl)) + { + log.debug("Executing:\n{}", ddl); + jdbcTemplate.update(ddl); + } + } + } + + /** + * @param script + * @return + */ + private String readFully(Resource script) + { + if (script == null || !script.exists()) + { + log.error("Unable to execute db task \"{}\", script \"{}\" not found.", getDescription(), script); + return null; + } + + String scriptContent; + InputStream is = null; + + try + { + is = script.getInputStream(); + scriptContent = IOUtils.toString(is, "UTF8"); + } + catch (IOException e) + { + log.error("Unable to execute db task \"{}\", script \"{}\" can't be read.", getDescription(), script); + return null; + } + finally + { + IOUtils.closeQuietly(is); + } + return scriptContent; + } + + public String getDescription() + { + return "Checking Views"; + } + + public List<Resource> getScripts() + { + return scripts; + } + + public void setScripts(List<Resource> scripts) + { + this.scripts = scripts; + } + + public String getSelectUserViewExistence() + { + return selectUserViewExistence; + } + + public void setSelectUserViewExistence(String selectUserViewExistence) + { + this.selectUserViewExistence = selectUserViewExistence; + } + + public String getSelectUserViewDDL() + { + return selectUserViewDDL; + } + + public void setSelectUserViewDDL(String selectUserViewDDL) + { + this.selectUserViewDDL = selectUserViewDDL; + } + + public String getDropView() + { + return dropView; + } + + public void setDropView(String dropView) + { + this.dropView = dropView; + } +} Deleted: tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java =================================================================== --- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2008-02-21 14:57:33 UTC (rev 681) +++ tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2008-02-21 21:03:49 UTC (rev 684) @@ -1,527 +0,0 @@ -/* - * Copyright Openmind http://www.openmindonline.it - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package it.openutils.migration.task.setup; - -import java.io.IOException; -import java.io.InputStream; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.sql.DataSource; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.ObjectUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.io.Resource; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.jdbc.BadSqlGrammarException; -import org.springframework.jdbc.core.ColumnMapRowMapper; -import org.springframework.jdbc.core.ConnectionCallback; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; - - -/** - * @author fgiust - * @version $Id$ - */ -public class ExcelConfigurationTask extends BaseDbTask implements DbTask -{ - - /** - * Logger. - */ - private Logger log = LoggerFactory.getLogger(ScriptBasedUnconditionalTask.class); - - private Resource script; - - private Map<String, ExcelConfigurationTask.QueryConfig> config; - - /** - * If true, when a record already exists and an updated query is defined it will be updated. Set it to false to only - * insert new records. - */ - private boolean updateEnabled = true; - - /** - * Sets the script. - * @param script the script to set - */ - public void setScript(Resource script) - { - this.script = script; - } - - /** - * Sets the config. - * @param config the config to set - */ - public void setConfig(Map<String, ExcelConfigurationTask.QueryConfig> config) - { - this.config = config; - } - - /** - * Sets the updateEnabled. - * @param updateEnabled the updateEnabled to set - */ - public void setUpdateEnabled(boolean updateEnabled) - { - this.updateEnabled = updateEnabled; - } - - /** - * {@inheritDoc} - */ - public void execute(DataSource dataSource) - { - if (script == null || !script.exists()) - { - log.error("Unable to execute db task \"{}\", script \"{}\" not found.", getDescription(), script); - return; - } - - InputStream is = null; - try - { - is = script.getInputStream(); - POIFSFileSystem fs = new POIFSFileSystem(is); - HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs); - int sheetNums = hssfworkbook.getNumberOfSheets(); - for (int j = 0; j < sheetNums; j++) - { - HSSFSheet sheet = hssfworkbook.getSheetAt(j); - String tableName = hssfworkbook.getSheetName(j); - - QueryConfig conf = config.get(tableName); - if (conf == null) - { - log.error("Unable to handle table {}", tableName); - continue; - } - processSheet(sheet, tableName, conf, dataSource); - - } - - } - catch (IOException e) - { - log.error(e.getMessage(), e); - } - finally - { - IOUtils.closeQuietly(is); - } - - } - - /** - * @param sheet - * @param tableName - */ - private void processSheet(HSSFSheet sheet, final String tableName, QueryConfig con, DataSource dataSource) - { - final List<String> columns = new ArrayList<String>(); - - HSSFRow row = sheet.getRow(0); - for (short k = 0; k < row.getLastCellNum(); k++) - { - HSSFCell cell = row.getCell(k); - if (cell != null) - { - String columnName = cell.getStringCellValue(); - if (StringUtils.isNotBlank(columnName)) - { - columns.add(StringUtils.trim(columnName)); - } - else - { - break; - } - } - } - - log.debug("Table: {}, Columns: {}", tableName, columns); - - final List<Integer> types = new ArrayList<Integer>(); - - boolean result = (Boolean) new JdbcTemplate(dataSource).execute(new ConnectionCallback() - { - - public Object doInConnection(Connection con) throws SQLException, DataAccessException - { - for (String column : columns) - { - ResultSet res = con.getMetaData().getColumns(null, null, tableName, column); - if (res.next()) - { - types.add(res.getInt("DATA_TYPE")); - } - else - { - log.warn("Unable to determine type for column '{}' in table '{}'", column, tableName); - return false; - } - res.close(); - } - return true; - } - }); - - if (!result) - { - log.warn("Skipping sheet {} ", tableName); - } - - String checkStatement = StringUtils.remove(StringUtils.trim(con.getCheckQuery()), "\n"); - String insertStatement = StringUtils.remove(StringUtils.trim(con.getInsertQuery()), "\n"); - String selectStatement = StringUtils.remove(StringUtils.trim(con.getSelectQuery()), "\n"); - String updateStatement = StringUtils.remove(StringUtils.trim(con.getUpdateQuery()), "\n"); - - processRecords( - sheet, - columns, - ArrayUtils.toPrimitive(types.toArray(new Integer[types.size()]), Types.NULL), - checkStatement, - insertStatement, - selectStatement, - updateStatement, - dataSource, - tableName); - } - - /** - * @param sheet - * @param columns - * @param checkStatement - * @param insertStatement - * @param updateStatement - * @param selectStatement - */ - @SuppressWarnings("unchecked") - private void processRecords(HSSFSheet sheet, List<String> columns, int[] types, String checkStatement, - String insertStatement, String selectStatement, String updateStatement, DataSource dataSource, String tableName) - { - JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); - int checkNum = StringUtils.countMatches(checkStatement, "?"); - int insertNum = StringUtils.countMatches(insertStatement, "?"); - int selectNum = StringUtils.countMatches(selectStatement, "?"); - int updateNum = StringUtils.countMatches(updateStatement, "?"); - - HSSFRow row; - for (short rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) - { - row = sheet.getRow(rowNum); - if (row == null) - { - return; - } - - List<String> values = new ArrayList<String>(); - - for (short k = 0; k < columns.size() && k <= row.getLastCellNum(); k++) - { - HSSFCell cell = row.getCell(k); - String value = null; - - if (cell == null) - { - value = StringUtils.EMPTY; - } - else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) - { - value = cell.getStringCellValue(); - } - else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) - { - double valueDouble = cell.getNumericCellValue(); - // when need to really check if it is a double or an int - double fraction = valueDouble % 1; - if (fraction == 0) - { - value = Integer.toString((int) valueDouble); - } - else - { - value = Double.toString(valueDouble); - } - } - - if (StringUtils.isEmpty(value)) - { - value = StringUtils.EMPTY; - } - - if ("<NULL>".equalsIgnoreCase(value)) - { - value = null; - } - - values.add(value); - } - - Object[] checkParams = ArrayUtils.subarray(values.toArray(), 0, checkNum); - for (int i = 0; i < checkParams.length; i++) - { - if (StringUtils.isEmpty((String) checkParams[i])) - { - return; - } - } - - int existing; - try - { - existing = jdbcTemplate.queryForInt(checkStatement, checkParams); - } - catch (BadSqlGrammarException bsge) - { - log.error("Error executing check query, current sheet will be skipped. {} Query in error: {}", bsge - .getMessage(), checkStatement); - return; - } - - if (existing == 0) - { - Object[] insertParams = ArrayUtils.subarray(values.toArray(), 0, insertNum); - int[] insertTypes = ArrayUtils.subarray(types, 0, insertNum); - if (log.isDebugEnabled()) - { - log.debug("Missing record with key {}; inserting {}", ArrayUtils.toString(checkParams), ArrayUtils - .toString(insertParams)); - } - - if (insertParams.length != insertTypes.length) - { - log.warn("Invalid number of param/type for table {}. Params: {}, types: {}", new Object[]{ - tableName, - insertParams.length, - insertTypes.length }); - } - - try - { - jdbcTemplate.update(insertStatement, insertParams, insertTypes); - } - catch (DataIntegrityViolationException bsge) - { - log - .error( - "Error executing update, record at {}:{} will be skipped. Query in error: '{}', values: {}. Error message: {}", - new Object[]{ - tableName, - rowNum + 1, - insertStatement, - ArrayUtils.toString(insertParams), - bsge.getMessage() }); - continue; - } - } - else if (updateEnabled - && StringUtils.isNotBlank(updateStatement) - && StringUtils.isNotBlank(selectStatement)) - { - try - { - RowMapper rowMapper = new ColumnMapRowMapper(); - Object[] selectParams = ArrayUtils.subarray(values.toArray(), 0, selectNum); - List<Map<String, Object>> selectResult = jdbcTemplate.query( - selectStatement, - selectParams, - rowMapper); - Map<String, Object> fetchedColumns = selectResult.get(0); - int i = 0; - boolean updateNeeded = false; - for (String columnName : columns) - { - Object columnObject = fetchedColumns.get(columnName); - if (columnObject == null) - { - continue; - } - String columnValue = ObjectUtils.toString(fetchedColumns.get(columnName)); - if (!StringUtils.equals(columnValue, values.get(i))) - { - updateNeeded = true; - break; - } - i++; - } - if (updateNeeded) - { - Object[] updateParams = ArrayUtils.subarray(values.toArray(), 0, updateNum); - int[] insertTypes = ArrayUtils.subarray(types, 0, insertNum); - if (log.isDebugEnabled()) - { - log.debug( - "Missing record with key {}; updating {}", - ArrayUtils.toString(checkParams), - ArrayUtils.toString(updateParams)); - } - - if (updateParams.length != insertTypes.length) - { - log.warn("Invalid number of param/type for table {}. Params: {}, types: {}", new Object[]{ - tableName, - updateParams.length, - insertTypes.length }); - } - - try - { - Object[] compoundUpdateParams = new Object[checkParams.length + updateParams.length]; - System.arraycopy(updateParams, 0, compoundUpdateParams, 0, updateParams.length); - System.arraycopy( - checkParams, - 0, - compoundUpdateParams, - compoundUpdateParams.length - 1, - checkParams.length); - jdbcTemplate.update(updateStatement, compoundUpdateParams); - } - catch (DataIntegrityViolationException bsge) - { - log - .error( - "Error executing insert, record at {}:{} will be skipped. Query in error: '{}', values: {}. Error message: {}", - new Object[]{ - tableName, - rowNum + 1, - insertStatement, - ArrayUtils.toString(updateParams), - bsge.getMessage() }); - continue; - } - } - } - catch (BadSqlGrammarException bsge) - { - log - .error( - "Error executing query to load row values, current possible update of row will be skipped. {} Query in error: {}", - bsge.getMessage(), - checkStatement); - return; - } - // 1 check if it is the same - // 2 update only if they differ - } - - } - } - - /** - * @author fgiust - * @version $Id$ - */ - public static class QueryConfig - { - - private String checkQuery; - - private String insertQuery; - - private String selectQuery; - - private String updateQuery; - - /** - * Returns the selectQuery. - * @return the selectQuery - */ - public String getSelectQuery() - { - return selectQuery; - } - - /** - * Sets the selectQuery. - * @param selectQuery the selectQuery to set - */ - public void setSelectQuery(String selectQuery) - { - this.selectQuery = selectQuery; - } - - /** - * Returns the checkQuery. - * @return the checkQuery - */ - public String getCheckQuery() - { - return checkQuery; - } - - /** - * Sets the checkQuery. - * @param checkQuery the checkQuery to set - */ - public void setCheckQuery(String checkQuery) - { - this.checkQuery = checkQuery; - } - - /** - * Returns the insertQuery. - * @return the insertQuery - */ - public String getInsertQuery() - { - return insertQuery; - } - - /** - * Sets the insertQuery. - * @param insertQuery the insertQuery to set - */ - public void setInsertQuery(String insertQuery) - { - this.insertQuery = insertQuery; - } - - /** - * Returns the updateQuery. - * @return the updateQuery - */ - public String getUpdateQuery() - { - return updateQuery; - } - - /** - * Sets the updateQuery. - * @param updateQuery the updateQuery to set - */ - public void setUpdateQuery(String updateQuery) - { - this.updateQuery = updateQuery; - } - } -} Copied: tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java (from rev 682, trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java) =================================================================== --- tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java (rev 0) +++ tags/openutils-dbmigration-2.0.3/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2008-02-21 21:03:49 UTC (rev 684) @@ -0,0 +1,667 @@ +/* + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package it.openutils.migration.task.setup; + +import java.io.IOException; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Types; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.jdbc.BadSqlGrammarException; +import org.springframework.jdbc.core.ColumnMapRowMapper; +import org.springframework.jdbc.core.ConnectionCallback; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; + + +/** + * @author fgiust + * @version $Id$ + */ +public class ExcelConfigurationTask extends BaseDbTask implements DbTask +{ + + /** + * Logger. + */ + private Logger log = LoggerFactory.getLogger(ScriptBasedUnconditionalTask.class); + + private Resource script; + + private Map<String, ExcelConfigurationTask.QueryConfig> config; + + /** + * Enable this task. + */ + private boolean enabled = true; + + /** + * If true, when a record already exists and an updated query is defined it will be updated. Set it to false to only + * insert new records. + */ + private boolean updateEnabled = true; + + /** + * Date format for ISO dates + */ + private SimpleDateFormat isodateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + + /** + * Sets the script. + * @param script the script to set + */ + public void setScript(Resource script) + { + this.script = script; + } + + /** + * Sets the config. + * @param config the config to set + */ + public void setConfig(Map<String, ExcelConfigurationTask.QueryConfig> config) + { + this.config = config; + } + + /** + * Sets the enabled. + * @param enabled the enabled to set + */ + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } + + /** + * Sets the updateEnabled. + * @param updateEnabled the updateEnabled to set + */ + public void setUpdateEnabled(boolean updateEnabled) + { + this.updateEnabled = updateEnabled; + } + + /** + * {@inheritDoc} + */ + public void execute(DataSource dataSource) + { + if (!enabled) + { + return; + } + + if (script == null || !script.exists()) + { + log.error("Unable to execute db task \"{}\", script \"{}\" not found.", getDescription(), script); + return; + } + + InputStream is = null; + try + { + is = script.getInputStream(); + POIFSFileSystem fs = new POIFSFileSystem(is); + HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs); + int sheetNums = hssfworkbook.getNumberOfSheets(); + for (int j = 0; j < sheetNums; j++) + { + HSSFSheet sheet = hssfworkbook.getSheetAt(j); + String tableName = hssfworkbook.getSheetName(j); + + QueryConfig conf = config.get(tableName); + if (conf == null) + { + suggestSheetConfig(sheet, tableName, conf, dataSource); + continue; + } + processSheet(sheet, tableName, conf, dataSource); + + } + + } + catch (IOException e) + { + log.error(e.getMessage(), e); + } + finally + { + IOUtils.closeQuietly(is); + } + + } + + public void suggestSheetConfig(HSSFSheet sheet, final String tableName, QueryConfig con, DataSource dataSource) + { + log.error("Unable to handle table {}", tableName); + + if (!log.isDebugEnabled()) + { + return; + } + + final List<String> columns = new ArrayList<String>(); + + HSSFRow row = sheet.getRow(0); + for (short k = 0; k < row.getLastCellNum(); k++) + { + HSSFCell cell = row.getCell(k); + if (cell != null) + { + String columnName = cell.getStringCellValue(); + if (StringUtils.isNotBlank(columnName)) + { + columns.add(StringUtils.trim(columnName)); + } + else + { + break; + } + } + } + + if (columns.isEmpty()) + { + return; + } + + StringBuffer buffer = new StringBuffer(); + + buffer.append(" <entry key=\""); + buffer.append(tableName); + buffer.append("\">\n" + + " <bean class=\"it.openutils.migration.task.setup.ExcelConfigurationTask$QueryConfig\">\n" + + " <property name=\"checkQuery\">\n" + + " <value>"); + + String initialCol = columns.get(0); + buffer.append("select count(" + initialCol + ") from " + tableName + " where " + initialCol + " = ?"); + buffer.append("</value>\n" + + " </property>\n" + + " <property name=\"insertQuery\">\n" + + " <value>"); + + buffer.append("INSERT INTO "); + buffer.append(tableName); + buffer.append(" ("); + + StringBuffer colNames = new StringBuffer(); + StringBuffer parNames = new StringBuffer(); + + for (Iterator<String> iterator = columns.iterator(); iterator.hasNext();) + { + String string = iterator.next(); + colNames.append(string); + parNames.append("?"); + if (iterator.hasNext()) + { + colNames.append(", "); + parNames.append(", "); + } + + } + + buffer.append(colNames); + buffer.append(") VALUES ("); + buffer.append(parNames); + buffer.append(")"); + buffer.append("</value>\n" + " </property>\n" + " </bean>\n" + " </entry>"); + + log.debug("You can use the following suggested config as template:\n{}", buffer.toString()); + } + + /** + * @param sheet + * @param tableName + */ + private void processSheet(HSSFSheet sheet, final String tableName, QueryConfig con, DataSource dataSource) + { + final List<String> columns = new ArrayList<String>(); + + HSSFRow row = sheet.getRow(0); + for (short k = 0; k < row.getLastCellNum(); k++) + { + HSSFCell cell = row.getCell(k); + if (cell != null) + { + String columnName = cell.getStringCellValue(); + if (StringUtils.isNotBlank(columnName)) + { + columns.add(StringUtils.trim(columnName)); + } + else + { + break; + } + } + } + + log.debug("Table: {}, Columns: {}", tableName, columns); + + final List<Integer> types = new ArrayList<Integer>(); + + boolean result = (Boolean) new JdbcTemplate(dataSource).execute(new ConnectionCallback() + { + + public Object doInConnection(Connection con) throws SQLException, DataAccessException + { + for (String column : columns) + { + ResultSet res = con.getMetaData().getColumns(null, null, tableName, column); + if (res.next()) + { + types.add(res.getInt("DATA_TYPE")); + } + else + { + log.warn("Unable to determine type for column '{}' in table '{}'", column, tableName); + return false; + } + res.close(); + } + return true; + } + }); + + if (!result) + { + log.warn("Skipping sheet {} ", tableName); + } + + String checkStatement = StringUtils.remove(StringUtils.trim(con.getCheckQuery()), "\n"); + String insertStatement = StringUtils.remove(StringUtils.trim(con.getInsertQuery()), "\n"); + String selectStatement = StringUtils.remove(StringUtils.trim(con.getSelectQuery()), "\n"); + String updateStatement = StringUtils.remove(StringUtils.trim(con.getUpdateQuery()), "\n"); + + processRecords( + sheet, + columns, + ArrayUtils.toPrimitive(types.toArray(new Integer[types.size()]), Types.NULL), + checkStatement, + insertStatement, + selectStatement, + updateStatement, + dataSource, + tableName); + } + + /** + * @param sheet + * @param columns + * @param checkStatement + * @param insertStatement + * @param updateStatement + * @param selectStatement + */ + @SuppressWarnings("unchecked") + private void processRecords(HSSFSheet sheet, List<String> columns, int[] types, String checkStatement, + String insertStatement, String selectStatement, String updateStatement, DataSource dataSource, String tableName) + { + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); + int checkNum = StringUtils.countMatches(checkStatement, "?"); + int insertNum = StringUtils.countMatches(insertStatement, "?"); + int selectNum = StringUtils.countMatches(selectStatement, "?"); + int updateNum = StringUtils.countMatches(updateStatement, "?"); + + HSSFRow row; + for (short rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) + { + row = sheet.getRow(rowNum); + if (row == null) + { + return; + } + + List<String> values = new ArrayList<String>(); + + for (short k = 0; k < columns.size() && k <= row.getLastCellNum(); k++) + { + HSSFCell cell = row.getCell(k); + String value = null; + + if (cell == null) + { + value = StringUtils.EMPTY; + } + else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) + { + value = cell.getStringCellValue(); + } + else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) + { + double valueDouble = cell.getNumericCellValue(); + // when need to really check if it is a double or an int + double fraction = valueDouble % 1; + if (fraction == 0) + { + value = Integer.toString((int) valueDouble); + } + else + { + value = Double.toString(valueDouble); + } + } + + if (StringUtils.isEmpty(value)) + { + value = StringUtils.EMPTY; + } + + if ("<NULL>".equalsIgnoreCase(value)) + { + value = null; + } + + values.add(value); + } + + Object[] checkParams = ArrayUtils.subarray(values.toArray(), 0, checkNum); + for (int i = 0; i < checkParams.length; i++) + { + if (StringUtils.isEmpty((String) checkParams[i])) + { + return; + } + } + + int existing; + try + { + existing = jdbcTemplate.queryForInt(checkStatement, checkParams); + } + catch (BadSqlGrammarException bsge) + { + log.error("Error executing check query, current sheet will be skipped. {} Query in error: {}", bsge + .getMessage(), checkStatement); + return; + } + + if (existing == 0) + { + Object[] insertParams = ArrayUtils.subarray(values.toArray(), 0, insertNum); + int[] insertTypes = ArrayUtils.subarray(types, 0, insertNum); + + // empty strings must be converted to nulls if the columns is numeric or date + // Cannot convert class java.lang.String to SQL type requested due to java.lang.NumberFormatException - + // For input string: "" + for (int j = 0; j < insertTypes.length; j++) + { + int tip = insertTypes[j]; + if (tip != Types.CHAR + && tip != Types.LONGNVARCHAR + && tip != Types.LONGVARCHAR + && tip != Types.NCHAR + && tip != Types.NVARCHAR + && tip != Types.VARCHAR + && "".equals(insertParams[j])) + { + insertParams[j] = null; + } + + if (tip == Types.DATE || tip == Types.TIME || tip == Types.TIMESTAMP && insertParams[j] != null) + { + synchronized (isodateformat) + { + try + { + insertParams[j] = isodateformat.parse((String) insertParams[j]); + } + catch (ParseException e) + { + log.debug("Cannot parse date \"{}\"", insertParams[j]); + } + } + } + } + + if (log.isDebugEnabled()) + { + log.debug("Missing record with key {}; inserting {}", ArrayUtils.toString(checkParams), ArrayUtils + .toString(insertParams)); + } + + if (insertParams.length != insertTypes.length) + { + log.warn("Invalid number of param/type for table {}. Params: {}, types: {}", new Object[]{ + tableName, + insertParams.length, + insertTypes.length}); + } + + try + { + jdbcTemplate.update(insertStatement, insertParams, insertTypes); + } + catch (DataIntegrityViolationException bsge) + { + log + .error( + "Error executing update, record at {}:{} will be skipped. Query in error: '{}', values: {}. Error message: {}", + new Object[]{ + tableName, + rowNum + 1, + insertStatement, + ArrayUtils.toString(insertParams), + bsge.getMessage()}); + continue; + } + } + else if (updateEnabled + && StringUtils.isNotBlank(updateStatement) + && StringUtils.isNotBlank(selectStatement)) + { + try + { + RowMapper rowMapper = new ColumnMapRowMapper(); + Object[] selectParams = ArrayUtils.subarray(values.toArray(), 0, selectNum); + List<Map<String, Object>> selectResult = jdbcTemplate.query( + selectStatement, + selectParams, + rowMapper); + Map<String, Object> fetchedColumns = selectResult.get(0); + int i = 0; + boolean updateNeeded = false; + for (String columnName : columns) + ... [truncated message content] |
From: <fg...@us...> - 2008-02-21 21:03:20
|
Revision: 683 http://openutils.svn.sourceforge.net/openutils/?rev=683&view=rev Author: fgiust Date: 2008-02-21 13:03:15 -0800 (Thu, 21 Feb 2008) Log Message: ----------- [maven-release-plugin] prepare release openutils-dbmigration-2.0.3 Modified Paths: -------------- trunk/openutils-dbmigration/pom.xml Modified: trunk/openutils-dbmigration/pom.xml =================================================================== --- trunk/openutils-dbmigration/pom.xml 2008-02-21 21:00:56 UTC (rev 682) +++ trunk/openutils-dbmigration/pom.xml 2008-02-21 21:03:15 UTC (rev 683) @@ -8,7 +8,7 @@ </parent> <artifactId>openutils-dbmigration</artifactId> <name>openutils db migration</name> - <version>2.0.3-SNAPSHOT</version> + <version>2.0.3</version> <description /> <dependencies> <dependency> @@ -93,4 +93,10 @@ <properties> <spring.version>2.5.1</spring.version> </properties> + + <scm> + <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-dbmigration-2.0.3</connection> + <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-dbmigration-2.0.3</developerConnection> + <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-dbmigration-2.0.3</url> + </scm> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fg...@us...> - 2008-02-21 21:01:16
|
Revision: 682 http://openutils.svn.sourceforge.net/openutils/?rev=682&view=rev Author: fgiust Date: 2008-02-21 13:00:56 -0800 (Thu, 21 Feb 2008) Log Message: ----------- ready for 2.0.3 Modified Paths: -------------- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java trunk/openutils-dbmigration/src/site/changes/changes.xml Added Paths: ----------- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java Modified: trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java =================================================================== --- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java 2008-02-21 14:57:33 UTC (rev 681) +++ trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleSequenceCreationTask.java 2008-02-21 21:00:56 UTC (rev 682) @@ -45,6 +45,8 @@ private String creationQuery; + private String dropQuery; + private String selectUserSequences; private String selectAllSequences; @@ -70,6 +72,15 @@ } /** + * Sets the dropQuery. + * @param dropQuery the dropQuery to set + */ + public void setDropQuery(String dropQuery) + { + this.dropQuery = dropQuery; + } + + /** * Sets the selectAllSequences. * @param selectAllSequences the selectAllSequences to set */ Added: trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java =================================================================== --- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java (rev 0) +++ trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java 2008-02-21 21:00:56 UTC (rev 682) @@ -0,0 +1,242 @@ +package it.openutils.migration.oracle; + +import it.openutils.migration.task.setup.DbTask; + +import java.io.IOException; +import java.io.InputStream; +import java.text.MessageFormat; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.sql.DataSource; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.Resource; +import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; + + +/** + * <p> + * Db tasks that handles the initial setup of views. + * </p> + * <p> + * Limitations: + * </p> + * <ol> + * <li> * not supported in field list</li> + * <li> fields must be enclosed in quotes</li> + * </ol> + * @author albertoq + * @version $Id$ + */ +public class OracleViewCreateOrUpdateTask implements DbTask +{ + + /** + * Logger. + */ + private Logger log = LoggerFactory.getLogger(OracleViewCreateOrUpdateTask.class); + + /** + * Script list to execute + */ + protected List<Resource> scripts; + + /** + * Query to verify view existence + */ + private String selectUserViewExistence; + + /** + * Query to retrieve view ddl + */ + private String selectUserViewDDL; + + /** + * Statement to drop a view + */ + private String dropView; + + /** + * {@inheritDoc} + */ + public void execute(DataSource dataSource) + { + + SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource); + for (Resource script : scripts) + { + String viewName = this.objectNameFromFileName(script); + + int result = jdbcTemplate.queryForInt(getSelectUserViewExistence(), viewName); + + String scriptContent = readFully(script); + + if (scriptContent == null) + { + continue; + } + + if (result == 0) + { + log.info("View {} not existing. Creating new view", viewName); + + createView(jdbcTemplate, scriptContent); + } + else + { + String scriptBody = extractViewBody(scriptContent); + if (scriptBody == null) + { + continue; + } + + String previousDDl = (String) jdbcTemplate.getJdbcOperations().queryForObject( + getSelectUserViewDDL(), + new Object[]{viewName}, + String.class); + + if (!StringUtils.equals(previousDDl.trim(), scriptBody.trim())) + { + log.info( + "Previous definition of view {} differs from actual. Dropping and recreating view", + new Object[]{viewName}); + + jdbcTemplate.update(MessageFormat.format(getDropView(), new Object[]{viewName})); + + createView(jdbcTemplate, scriptContent); + } + } + } + + } + + /** + * @param script The script resource + * @return The script name + */ + protected String objectNameFromFileName(Resource script) + { + return StringUtils.substringBeforeLast(script.getFilename(), "."); + } + + /** + * @param scriptContent + * @return + */ + private String extractViewBody(String scriptContent) + { + Pattern pattern = Pattern.compile(".*\\s+AS\\s+(.*)", Pattern.CASE_INSENSITIVE | Pattern.DOTALL); + Matcher matcher = pattern.matcher(scriptContent); + boolean bodyFound = matcher.find(); + if (bodyFound) + { + return matcher.group(1); + } + else + { + return null; + } + } + + /** + * @param jdbcTemplate + * @param script + * @return + */ + private void createView(SimpleJdbcTemplate jdbcTemplate, String script) + { + + String[] ddls = StringUtils.split(script, ";"); + + for (String ddl : ddls) + { + if (StringUtils.isNotBlank(ddl)) + { + log.debug("Executing:\n{}", ddl); + jdbcTemplate.update(ddl); + } + } + } + + /** + * @param script + * @return + */ + private String readFully(Resource script) + { + if (script == null || !script.exists()) + { + log.error("Unable to execute db task \"{}\", script \"{}\" not found.", getDescription(), script); + return null; + } + + String scriptContent; + InputStream is = null; + + try + { + is = script.getInputStream(); + scriptContent = IOUtils.toString(is, "UTF8"); + } + catch (IOException e) + { + log.error("Unable to execute db task \"{}\", script \"{}\" can't be read.", getDescription(), script); + return null; + } + finally + { + IOUtils.closeQuietly(is); + } + return scriptContent; + } + + public String getDescription() + { + return "Checking Views"; + } + + public List<Resource> getScripts() + { + return scripts; + } + + public void setScripts(List<Resource> scripts) + { + this.scripts = scripts; + } + + public String getSelectUserViewExistence() + { + return selectUserViewExistence; + } + + public void setSelectUserViewExistence(String selectUserViewExistence) + { + this.selectUserViewExistence = selectUserViewExistence; + } + + public String getSelectUserViewDDL() + { + return selectUserViewDDL; + } + + public void setSelectUserViewDDL(String selectUserViewDDL) + { + this.selectUserViewDDL = selectUserViewDDL; + } + + public String getDropView() + { + return dropView; + } + + public void setDropView(String dropView) + { + this.dropView = dropView; + } +} Property changes on: trunk/openutils-dbmigration/src/main/java/it/openutils/migration/oracle/OracleViewCreateOrUpdateTask.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Modified: trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java =================================================================== --- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2008-02-21 14:57:33 UTC (rev 681) +++ trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2008-02-21 21:00:56 UTC (rev 682) @@ -21,7 +21,10 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -65,12 +68,22 @@ private Map<String, ExcelConfigurationTask.QueryConfig> config; /** + * Enable this task. + */ + private boolean enabled = true; + + /** * If true, when a record already exists and an updated query is defined it will be updated. Set it to false to only * insert new records. */ private boolean updateEnabled = true; /** + * Date format for ISO dates + */ + private SimpleDateFormat isodateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + + /** * Sets the script. * @param script the script to set */ @@ -89,6 +102,15 @@ } /** + * Sets the enabled. + * @param enabled the enabled to set + */ + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } + + /** * Sets the updateEnabled. * @param updateEnabled the updateEnabled to set */ @@ -102,6 +124,11 @@ */ public void execute(DataSource dataSource) { + if (!enabled) + { + return; + } + if (script == null || !script.exists()) { log.error("Unable to execute db task \"{}\", script \"{}\" not found.", getDescription(), script); @@ -123,7 +150,7 @@ QueryConfig conf = config.get(tableName); if (conf == null) { - log.error("Unable to handle table {}", tableName); + suggestSheetConfig(sheet, tableName, conf, dataSource); continue; } processSheet(sheet, tableName, conf, dataSource); @@ -142,6 +169,85 @@ } + public void suggestSheetConfig(HSSFSheet sheet, final String tableName, QueryConfig con, DataSource dataSource) + { + log.error("Unable to handle table {}", tableName); + + if (!log.isDebugEnabled()) + { + return; + } + + final List<String> columns = new ArrayList<String>(); + + HSSFRow row = sheet.getRow(0); + for (short k = 0; k < row.getLastCellNum(); k++) + { + HSSFCell cell = row.getCell(k); + if (cell != null) + { + String columnName = cell.getStringCellValue(); + if (StringUtils.isNotBlank(columnName)) + { + columns.add(StringUtils.trim(columnName)); + } + else + { + break; + } + } + } + + if (columns.isEmpty()) + { + return; + } + + StringBuffer buffer = new StringBuffer(); + + buffer.append(" <entry key=\""); + buffer.append(tableName); + buffer.append("\">\n" + + " <bean class=\"it.openutils.migration.task.setup.ExcelConfigurationTask$QueryConfig\">\n" + + " <property name=\"checkQuery\">\n" + + " <value>"); + + String initialCol = columns.get(0); + buffer.append("select count(" + initialCol + ") from " + tableName + " where " + initialCol + " = ?"); + buffer.append("</value>\n" + + " </property>\n" + + " <property name=\"insertQuery\">\n" + + " <value>"); + + buffer.append("INSERT INTO "); + buffer.append(tableName); + buffer.append(" ("); + + StringBuffer colNames = new StringBuffer(); + StringBuffer parNames = new StringBuffer(); + + for (Iterator<String> iterator = columns.iterator(); iterator.hasNext();) + { + String string = iterator.next(); + colNames.append(string); + parNames.append("?"); + if (iterator.hasNext()) + { + colNames.append(", "); + parNames.append(", "); + } + + } + + buffer.append(colNames); + buffer.append(") VALUES ("); + buffer.append(parNames); + buffer.append(")"); + buffer.append("</value>\n" + " </property>\n" + " </bean>\n" + " </entry>"); + + log.debug("You can use the following suggested config as template:\n{}", buffer.toString()); + } + /** * @param sheet * @param tableName @@ -312,6 +418,40 @@ { Object[] insertParams = ArrayUtils.subarray(values.toArray(), 0, insertNum); int[] insertTypes = ArrayUtils.subarray(types, 0, insertNum); + + // empty strings must be converted to nulls if the columns is numeric or date + // Cannot convert class java.lang.String to SQL type requested due to java.lang.NumberFormatException - + // For input string: "" + for (int j = 0; j < insertTypes.length; j++) + { + int tip = insertTypes[j]; + if (tip != Types.CHAR + && tip != Types.LONGNVARCHAR + && tip != Types.LONGVARCHAR + && tip != Types.NCHAR + && tip != Types.NVARCHAR + && tip != Types.VARCHAR + && "".equals(insertParams[j])) + { + insertParams[j] = null; + } + + if (tip == Types.DATE || tip == Types.TIME || tip == Types.TIMESTAMP && insertParams[j] != null) + { + synchronized (isodateformat) + { + try + { + insertParams[j] = isodateformat.parse((String) insertParams[j]); + } + catch (ParseException e) + { + log.debug("Cannot parse date \"{}\"", insertParams[j]); + } + } + } + } + if (log.isDebugEnabled()) { log.debug("Missing record with key {}; inserting {}", ArrayUtils.toString(checkParams), ArrayUtils @@ -323,7 +463,7 @@ log.warn("Invalid number of param/type for table {}. Params: {}, types: {}", new Object[]{ tableName, insertParams.length, - insertTypes.length }); + insertTypes.length}); } try @@ -340,7 +480,7 @@ rowNum + 1, insertStatement, ArrayUtils.toString(insertParams), - bsge.getMessage() }); + bsge.getMessage()}); continue; } } @@ -391,7 +531,7 @@ log.warn("Invalid number of param/type for table {}. Params: {}, types: {}", new Object[]{ tableName, updateParams.length, - insertTypes.length }); + insertTypes.length}); } try @@ -416,7 +556,7 @@ rowNum + 1, insertStatement, ArrayUtils.toString(updateParams), - bsge.getMessage() }); + bsge.getMessage()}); continue; } } Modified: trunk/openutils-dbmigration/src/site/changes/changes.xml =================================================================== --- trunk/openutils-dbmigration/src/site/changes/changes.xml 2008-02-21 14:57:33 UTC (rev 681) +++ trunk/openutils-dbmigration/src/site/changes/changes.xml 2008-02-21 21:00:56 UTC (rev 682) @@ -8,6 +8,15 @@ <author email="fgiust(at)users.sourceforge.net">Fabrizio Giustina</author> </properties> <body> + <release version="2.0.3" date="2008-02-21" description="2.0.3"> + <action type="add" dev="fgiust">New it.openutils.migration.oracle.OracleViewCreateOrUpdateTask</action> + <action type="fix" dev="fgiust">Fix handling of empty strings for numeric types in ExcelConfigurationTask</action> + <action type="update" dev="fgiust"> + Dates are now always processed using an ISO8601 date format in ExcelConfigurationTask (previously the parsing + was left to the jdbc driver, leading to different results with different drivers) + </action> + <action type="add" dev="fgiust">Added a new "enabled" flag in ExcelConfigurationTask</action> + </release> <release version="2.0.2" date="2008-02-11" description="2.0.2"> <action type="add" dev="fgiust">New it.openutils.migration.oracle.OracleSequenceCreationTask</action> <action type="update" dev="fgiust"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 14:57:32
|
Revision: 681 http://openutils.svn.sourceforge.net/openutils/?rev=681&view=rev Author: fcarone Date: 2008-02-21 06:57:33 -0800 (Thu, 21 Feb 2008) Log Message: ----------- [maven-release-plugin] prepare for next development iteration Modified Paths: -------------- trunk/openutils-hibernate-security/pom.xml Modified: trunk/openutils-hibernate-security/pom.xml =================================================================== --- trunk/openutils-hibernate-security/pom.xml 2008-02-21 14:57:26 UTC (rev 680) +++ trunk/openutils-hibernate-security/pom.xml 2008-02-21 14:57:33 UTC (rev 681) @@ -9,7 +9,7 @@ <groupId>net.sourceforge.openutils</groupId> <artifactId>openutils-hibernate-security</artifactId> <name>openutils hibernate security</name> - <version>0.0.4</version> + <version>0.0.5-SNAPSHOT</version> <description>Hibernate Security classes</description> <properties> <spring.version>2.5.1</spring.version> @@ -220,10 +220,4 @@ <scope>test</scope> </dependency> </dependencies> - - <scm> - <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.4</connection> - <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.4</developerConnection> - <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-hibernate-security-0.0.4</url> - </scm> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 14:57:20
|
Revision: 680 http://openutils.svn.sourceforge.net/openutils/?rev=680&view=rev Author: fcarone Date: 2008-02-21 06:57:26 -0800 (Thu, 21 Feb 2008) Log Message: ----------- [maven-release-plugin] copy for tag openutils-hibernate-security-0.0.4 Added Paths: ----------- tags/openutils-hibernate-security-0.0.4/ tags/openutils-hibernate-security-0.0.4/pom.xml tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java Removed Paths: ------------- tags/openutils-hibernate-security-0.0.4/pom.xml tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java Copied: tags/openutils-hibernate-security-0.0.4 (from rev 673, trunk/openutils-hibernate-security) Deleted: tags/openutils-hibernate-security-0.0.4/pom.xml =================================================================== --- trunk/openutils-hibernate-security/pom.xml 2008-02-21 09:17:34 UTC (rev 673) +++ tags/openutils-hibernate-security-0.0.4/pom.xml 2008-02-21 14:57:26 UTC (rev 680) @@ -1,223 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <artifactId>openutils</artifactId> - <groupId>net.sourceforge.openutils</groupId> - <version>7</version> - <relativePath>..</relativePath> - </parent> - <modelVersion>4.0.0</modelVersion> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-hibernate-security</artifactId> - <name>openutils hibernate security</name> - <version>0.0.4-SNAPSHOT</version> - <description>Hibernate Security classes</description> - <properties> - <spring.version>2.5.1</spring.version> - <aspectj.version>1.5.3</aspectj.version> - </properties> - <dependencies> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-aop</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-orm</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <!-- already imported cglib-nodep by spring --> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>aspectj</groupId> - <artifactId>aspectjrt</artifactId> - <version>${aspectj.version}</version> - </dependency> - <dependency> - <groupId>aspectj</groupId> - <artifactId>aspectjweaver</artifactId> - <version>${aspectj.version}</version> - </dependency> - <dependency> - <groupId>cglib</groupId> - <artifactId>cglib-nodep</artifactId> - <version>2.1_3</version> - </dependency> - <dependency> - <groupId>asm</groupId> - <artifactId>asm</artifactId> - <version>2.2.3</version> - </dependency> - <dependency> - <groupId>asm</groupId> - <artifactId>asm-attrs</artifactId> - <version>2.2.3</version> - </dependency> - <dependency> - <groupId>asm</groupId> - <artifactId>asm-commons</artifactId> - <version>2.2.3</version> - </dependency> - <dependency> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-usermanagement</artifactId> - <version>2.0</version> - </dependency> - <dependency> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-usermanagement-dataobjects</artifactId> - <version>2.0</version> - </dependency> - <dependency> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-bshd5</artifactId> - <version>2.0.1</version> - </dependency> - <dependency> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-testing-junit</artifactId> - <version>2.0.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-testing</artifactId> - <version>2.0.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - <version>1.4.1</version> - </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate</artifactId> - <version>3.2.5.ga</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-annotations</artifactId> - <version>3.2.1.ga</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>commons-dbcp</groupId> - <artifactId>commons-dbcp</artifactId> - <version>1.2.1</version> - <scope>test</scope> - <exclusions> - <exclusion> - <artifactId>xerces</artifactId> - <groupId>xerces</groupId> - </exclusion> - <exclusion> - <artifactId>xml-apis</artifactId> - <groupId>xml-apis</groupId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.2</version> - </dependency> - <dependency> - <groupId>org.acegisecurity</groupId> - <artifactId>acegi-security</artifactId> - <version>1.0.6</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <artifactId>spring-remoting</artifactId> - <groupId>org.springframework</groupId> - </exclusion> - <exclusion> - <artifactId>spring-jdbc</artifactId> - <groupId>org.springframework</groupId> - </exclusion> - <exclusion> - <artifactId>spring-support</artifactId> - <groupId>org.springframework</groupId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>hsqldb</groupId> - <artifactId>hsqldb</artifactId> - <version>1.8.0.7</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.4</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>dbunit</groupId> - <artifactId>dbunit</artifactId> - <version>2.1</version> - <scope>test</scope> - </dependency> - </dependencies> -</project> \ No newline at end of file Copied: tags/openutils-hibernate-security-0.0.4/pom.xml (from rev 679, trunk/openutils-hibernate-security/pom.xml) =================================================================== --- tags/openutils-hibernate-security-0.0.4/pom.xml (rev 0) +++ tags/openutils-hibernate-security-0.0.4/pom.xml 2008-02-21 14:57:26 UTC (rev 680) @@ -0,0 +1,229 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <artifactId>openutils</artifactId> + <groupId>net.sourceforge.openutils</groupId> + <version>7</version> + <relativePath>..</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-hibernate-security</artifactId> + <name>openutils hibernate security</name> + <version>0.0.4</version> + <description>Hibernate Security classes</description> + <properties> + <spring.version>2.5.1</spring.version> + <aspectj.version>1.5.3</aspectj.version> + </properties> + <dependencies> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-aop</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-orm</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <!-- already imported cglib-nodep by spring --> + <groupId>cglib</groupId> + <artifactId>cglib</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>aspectj</groupId> + <artifactId>aspectjrt</artifactId> + <version>${aspectj.version}</version> + </dependency> + <dependency> + <groupId>aspectj</groupId> + <artifactId>aspectjweaver</artifactId> + <version>${aspectj.version}</version> + </dependency> + <dependency> + <groupId>cglib</groupId> + <artifactId>cglib-nodep</artifactId> + <version>2.1_3</version> + </dependency> + <dependency> + <groupId>asm</groupId> + <artifactId>asm</artifactId> + <version>2.2.3</version> + </dependency> + <dependency> + <groupId>asm</groupId> + <artifactId>asm-attrs</artifactId> + <version>2.2.3</version> + </dependency> + <dependency> + <groupId>asm</groupId> + <artifactId>asm-commons</artifactId> + <version>2.2.3</version> + </dependency> + <dependency> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-usermanagement</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-usermanagement-dataobjects</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-bshd5</artifactId> + <version>2.0.1</version> + </dependency> + <dependency> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-testing-junit</artifactId> + <version>2.0.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-testing</artifactId> + <version>2.0.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.1</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate</artifactId> + <version>3.2.5.ga</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>cglib</groupId> + <artifactId>cglib</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-annotations</artifactId> + <version>3.2.1.ga</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>cglib</groupId> + <artifactId>cglib</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-dbcp</groupId> + <artifactId>commons-dbcp</artifactId> + <version>1.2.1</version> + <scope>test</scope> + <exclusions> + <exclusion> + <artifactId>xerces</artifactId> + <groupId>xerces</groupId> + </exclusion> + <exclusion> + <artifactId>xml-apis</artifactId> + <groupId>xml-apis</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.2</version> + </dependency> + <dependency> + <groupId>org.acegisecurity</groupId> + <artifactId>acegi-security</artifactId> + <version>1.0.6</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <artifactId>spring-remoting</artifactId> + <groupId>org.springframework</groupId> + </exclusion> + <exclusion> + <artifactId>spring-jdbc</artifactId> + <groupId>org.springframework</groupId> + </exclusion> + <exclusion> + <artifactId>spring-support</artifactId> + <groupId>org.springframework</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>1.8.0.7</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.4</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>dbunit</groupId> + <artifactId>dbunit</artifactId> + <version>2.1</version> + <scope>test</scope> + </dependency> + </dependencies> + + <scm> + <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.4</connection> + <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.4</developerConnection> + <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-hibernate-security-0.0.4</url> + </scm> +</project> \ No newline at end of file Deleted: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-21 09:17:34 UTC (rev 673) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-21 14:57:26 UTC (rev 680) @@ -1,154 +0,0 @@ -/* - * Copyright Openmind http://www.openmindonline.it - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package it.openutils.hibernate.security.aop; - -import it.openutils.hibernate.security.dataobject.SecurityRule; -import it.openutils.hibernate.security.services.SecurityRuleManager; - -import java.util.ArrayList; -import java.util.List; - -import org.acegisecurity.Authentication; -import org.acegisecurity.GrantedAuthority; -import org.acegisecurity.context.SecurityContextHolder; -import org.apache.commons.lang.StringUtils; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.hibernate.Filter; -import org.hibernate.criterion.Criterion; -import org.hibernate.criterion.Restrictions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * @author fcarone - * @version $Id$ - */ -@Aspect -public class AOPSecurity -{ - - /** - * Logger. - */ - private Logger log = LoggerFactory.getLogger(AOPSecurity.class); - - private SecurityRuleManager securityRuleManager; - - private List<String> securedDAOs; - - private boolean enabled; - - /** - * @param pjp The proceeding joinpoint - * @param filter The entity we are going to filter - * @param additionalCriteria The additional criteria list, cannot be null - * @return The execution invocation result - * @throws Throwable Any exception occurring in the invoked method - */ - @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " - + // - " args(filter, .., additionalCriteria)") - public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria) - throws Throwable - { - if (!enabled) - { - log.debug("DAO security disabled, proceeding."); - return pjp.proceed(); - } - - if (!securedDAOs.contains(pjp.getTarget().getClass().getCanonicalName())) - { - log.debug("The intercepted DAO {} is not secured, proceeding.", pjp.getTarget().toString()); - return pjp.proceed(); - } - - log.debug("applying security rules for {} with criteria {}", filter.toString(), additionalCriteria); - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - if (authentication == null) - { - throw new SecurityException("Authentication is not valid"); - } - GrantedAuthority[] authorities = authentication.getAuthorities(); - List<String> roles = new ArrayList<String>(); - for (int i = 0; i < authorities.length; i++) - { - roles.add(authorities[i].getAuthority()); - } - - String entity = filter.getClass().getCanonicalName(); - List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles); - - if (rules.isEmpty()) - { - if (log.isWarnEnabled()) - { - String grantedRoles = StringUtils.EMPTY; - for (int i = 0; i < authorities.length; i++) - { - grantedRoles += authorities[i].getAuthority() + " "; - } - log.warn( - "No rules found. Access is denied on " + entity + ", for user {} with roles {}", - SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString(), - grantedRoles); - } - throw new SecurityException("Access denied"); - } - - Filter hibernateFilter = securityRuleManager.getEntityFilterFromRules(entity, rules); - - Criterion sqlCriterion = Restrictions.sqlRestriction(hibernateFilter - .getFilterDefinition() - .getDefaultFilterCondition()); - - log.debug("Adding sql restriction: {}", sqlCriterion.toString()); - additionalCriteria.add(sqlCriterion); - - Object result = pjp.proceed(); - return result; - } - - /** - * Sets the securityRuleManager. - * @param securityRuleManager the securityRuleManager to set - */ - public void setSecurityRuleManager(SecurityRuleManager securityRuleManager) - { - this.securityRuleManager = securityRuleManager; - } - - /** - * Sets the securedDAOs. - * @param securedDAOs the securedDAOs to set - */ - public void setSecuredDAOs(List<String> securedDAOs) - { - this.securedDAOs = securedDAOs; - } - - /** - * Sets the enabled. - * @param enabled the enabled to set - */ - public void setEnabled(boolean enabled) - { - this.enabled = enabled; - } -} Copied: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java (from rev 675, trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java) =================================================================== --- tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java (rev 0) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-21 14:57:26 UTC (rev 680) @@ -0,0 +1,154 @@ +/* + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package it.openutils.hibernate.security.aop; + +import it.openutils.hibernate.security.dataobject.SecurityRule; +import it.openutils.hibernate.security.services.SecurityRuleManager; + +import java.util.ArrayList; +import java.util.List; + +import org.acegisecurity.Authentication; +import org.acegisecurity.GrantedAuthority; +import org.acegisecurity.context.SecurityContextHolder; +import org.apache.commons.lang.StringUtils; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.hibernate.Filter; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Restrictions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * @author fcarone + * @version $Id$ + */ +@Aspect +public class AOPSecurity +{ + + /** + * Logger. + */ + private Logger log = LoggerFactory.getLogger(AOPSecurity.class); + + private SecurityRuleManager securityRuleManager; + + private List<String> securedDAOs; + + private boolean enabled; + + /** + * @param pjp The proceeding joinpoint + * @param filter The entity we are going to filter + * @param additionalCriteria The additional criteria list, cannot be null + * @return The execution invocation result + * @throws Throwable Any exception occurring in the invoked method + */ + @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + + // + " args(filter, .., additionalCriteria)") + public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria) + throws Throwable + { + if (!enabled) + { + log.debug("DAO security disabled, proceeding."); + return pjp.proceed(); + } + + if (!securedDAOs.contains(pjp.getTarget().getClass().getCanonicalName())) + { + log.debug("The intercepted DAO {} is not secured, proceeding.", pjp.getTarget().toString()); + return pjp.proceed(); + } + + log.debug("applying security rules for {} with criteria {}", filter.toString(), additionalCriteria); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication == null) + { + throw new SecurityException("Authentication is not valid"); + } + GrantedAuthority[] authorities = authentication.getAuthorities(); + List<String> roles = new ArrayList<String>(); + for (int i = 0; i < authorities.length; i++) + { + roles.add(authorities[i].getAuthority()); + } + + String entity = filter.getClass().getCanonicalName(); + List<SecurityRule> rules = securityRuleManager.getRulesForRoles(filter, roles); + + if (rules.isEmpty()) + { + if (log.isWarnEnabled()) + { + String grantedRoles = StringUtils.EMPTY; + for (int i = 0; i < authorities.length; i++) + { + grantedRoles += authorities[i].getAuthority() + " "; + } + log.warn( + "No rules found. Access is denied on " + entity + ", for user {} with roles {}", + SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString(), + grantedRoles); + } + throw new SecurityException("Access denied"); + } + + Filter hibernateFilter = securityRuleManager.getEntityFilterFromRules(entity, rules); + + Criterion sqlCriterion = Restrictions.sqlRestriction(hibernateFilter + .getFilterDefinition() + .getDefaultFilterCondition()); + + log.debug("Adding sql restriction: {}", sqlCriterion.toString()); + additionalCriteria.add(sqlCriterion); + + Object result = pjp.proceed(); + return result; + } + + /** + * Sets the securityRuleManager. + * @param securityRuleManager the securityRuleManager to set + */ + public void setSecurityRuleManager(SecurityRuleManager securityRuleManager) + { + this.securityRuleManager = securityRuleManager; + } + + /** + * Sets the securedDAOs. + * @param securedDAOs the securedDAOs to set + */ + public void setSecuredDAOs(List<String> securedDAOs) + { + this.securedDAOs = securedDAOs; + } + + /** + * Sets the enabled. + * @param enabled the enabled to set + */ + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } +} Deleted: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-21 09:17:34 UTC (rev 673) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-21 14:57:26 UTC (rev 680) @@ -1,258 +0,0 @@ -/* - * Copyright Openmind http://www.openmindonline.it - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package it.openutils.hibernate.security.filter; - -import it.openutils.hibernate.security.dataobject.PermissionEnum; -import it.openutils.hibernate.security.dataobject.SecurityRule; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Table; - -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.commons.lang.StringUtils; -import org.hibernate.Filter; -import org.hibernate.HibernateException; -import org.hibernate.engine.FilterDefinition; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * @author fcarone - * @version $Id$ - */ -public class JavaBeanFilter implements Filter -{ - - private FilterDefinition filterDefinition; - - /** - * Logger. - */ - private Logger log = LoggerFactory.getLogger(JavaBeanFilter.class); - - - /** - * @param bean The bean to set rules for - * @param securityRules The list of {@link SecurityRule}s to apply. - * @throws ClassNotFoundException If the bean class has not been found - * @throws InstantiationException If the bean doesn't contain the no-arg constructor - * @throws IllegalAccessException If the bean properties cannot be accessed - * @throws SecurityException If the bean class cannot be accessed - * @throws NoSuchFieldException If the property contained in the security rule refers to a bean non-existent field - */ - @SuppressWarnings("unchecked") - public JavaBeanFilter(String bean, List<SecurityRule> securityRules) - throws ClassNotFoundException, - InstantiationException, - IllegalAccessException, - SecurityException, - NoSuchFieldException - { - Class< ? extends Object> beanClass = Class.forName(bean, true, this.getClass().getClassLoader()); - - if (!beanClass.isAnnotationPresent(Entity.class)) - { - throw new IllegalArgumentException("Class " + bean + " must contain the @Entity annotation."); - } - if (!(beanClass.isAnnotationPresent(Table.class) || beanClass - .isAnnotationPresent(org.hibernate.annotations.Table.class))) - { - throw new IllegalArgumentException("Class " + bean + " must contain the @Table annotation."); - } - - Map<String, String> propertyColumnMap = new HashMap<String, String>(); - - StringBuffer filterDefCondition = new StringBuffer(); - String filterName = StringUtils.EMPTY; - - Map<String, List<SecurityRule>> roleRuleMap = new LinkedHashMap<String, List<SecurityRule>>(); - for (SecurityRule securityRule : securityRules) - { - if (!roleRuleMap.containsKey(securityRule.getRole())) - { - roleRuleMap.put(securityRule.getRole(), new ArrayList<SecurityRule>()); - } - roleRuleMap.get(securityRule.getRole()).add(securityRule); - } - - for (Map.Entry<String, List<SecurityRule>> entry : roleRuleMap.entrySet()) - { - filterName += entry.getKey(); - - List<SecurityRule> rules = entry.getValue(); - if (rules == null || rules.isEmpty()) - { - log.debug("No rules defined for role {}", entry.getKey()); - continue; - } - - if (!rulesContainLoad(rules)) - { - log.debug("No LOAD rules defined for role {}", entry.getKey()); - continue; - } - - if (!StringUtils.isEmpty(filterDefCondition.toString())) - { - filterDefCondition.append(" OR "); - } - filterDefCondition.append("("); - StringBuffer subFilterCond = new StringBuffer(); - for (SecurityRule securityRule : rules) - { - if (!securityRule.getPermissions().contains(PermissionEnum.LOAD)) - { - log.debug("Skipping rule {} since it is not related to LOAD.", securityRule); - continue; - } - String property = securityRule.getProperty(); - filterName += property; - - Field field = beanClass.getDeclaredField(property); - - // @todo: annotations may also be defined on getters/setters... - propertyColumnMap.put(property, field.getAnnotation(Column.class).name()); - if (!StringUtils.isEmpty(subFilterCond.toString())) - { - subFilterCond.append(" AND "); - } - String modifier = null; - String startQuote = null; - String endQuote = null; - - if (String.class.isAssignableFrom(field.getType())) - { - startQuote = "\'"; - endQuote = startQuote; - } - else if (Number.class.isAssignableFrom(field.getType())) - { - startQuote = StringUtils.EMPTY; - endQuote = StringUtils.EMPTY; - } - - switch (securityRule.getModifier()) - { - case EQUALS : - modifier = " = "; - break; - - case NOT : - modifier = " != "; - break; - - default : - throw new IllegalArgumentException("Modifier " + securityRule.getModifier() + "not recognized."); - } - subFilterCond.append(field.getAnnotation(Column.class).name()); - subFilterCond.append(modifier); - if (StringUtils.isNotEmpty(startQuote)) - { - subFilterCond.append(startQuote); - } - subFilterCond.append(StringEscapeUtils.escapeSql(securityRule.getValue())); - if (StringUtils.isNotEmpty(endQuote)) - { - subFilterCond.append(endQuote); - } - - filterName += securityRule.getValue(); - } - filterDefCondition.append(subFilterCond); - filterDefCondition.append(")"); - } - - // filtername is unique, but untraceable - this.filterDefinition = new FilterDefinition(Integer.toString(filterName.hashCode()), filterDefCondition - .toString(), new HashMap()); - } - - /** - * @param rules - * @return - */ - private boolean rulesContainLoad(List<SecurityRule> rules) - { - for (SecurityRule rule : rules) - { - if (rule.getPermissions().contains(PermissionEnum.LOAD)) - { - return true; - } - } - return false; - } - - /** - * {@inheritDoc} - */ - public FilterDefinition getFilterDefinition() - { - return this.filterDefinition; - } - - /** - * {@inheritDoc} - */ - public String getName() - { - return this.filterDefinition.getFilterName(); - } - - /** - * {@inheritDoc} - */ - public Filter setParameter(String name, Object value) - { - return this; - } - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public Filter setParameterList(String name, Collection values) - { - return this; - } - - /** - * {@inheritDoc} - */ - public Filter setParameterList(String name, Object[] values) - { - return this; - } - - /** - * {@inheritDoc} - */ - public void validate() throws HibernateException - { - // - } - -} Copied: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java (from rev 674, trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java) =================================================================== --- tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java (rev 0) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-21 14:57:26 UTC (rev 680) @@ -0,0 +1,259 @@ +/* + * Copyright Openmind http://www.openmindonline.it + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package it.openutils.hibernate.security.filter; + +import it.openutils.hibernate.security.dataobject.PermissionEnum; +import it.openutils.hibernate.security.dataobject.SecurityRule; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.acegisecurity.util.FieldUtils; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; +import org.hibernate.Filter; +import org.hibernate.HibernateException; +import org.hibernate.engine.FilterDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * @author fcarone + * @version $Id$ + */ +public class JavaBeanFilter implements Filter +{ + + private FilterDefinition filterDefinition; + + /** + * Logger. + */ + private Logger log = LoggerFactory.getLogger(JavaBeanFilter.class); + + + /** + * @param bean The bean to set rules for + * @param securityRules The list of {@link SecurityRule}s to apply. + * @throws ClassNotFoundException If the bean class has not been found + * @throws InstantiationException If the bean doesn't contain the no-arg constructor + * @throws IllegalAccessException If the bean properties cannot be accessed + * @throws SecurityException If the bean class cannot be accessed + * @throws NoSuchFieldException If the property contained in the security rule refers to a bean non-existent field + */ + @SuppressWarnings("unchecked") + public JavaBeanFilter(String bean, List<SecurityRule> securityRules) + throws ClassNotFoundException, + InstantiationException, + IllegalAccessException, + SecurityException, + NoSuchFieldException + { + Class< ? extends Object> beanClass = Class.forName(bean, true, this.getClass().getClassLoader()); + + if (!beanClass.isAnnotationPresent(Entity.class)) + { + throw new IllegalArgumentException("Class " + bean + " must contain the @Entity annotation."); + } + if (!(beanClass.isAnnotationPresent(Table.class) || beanClass + .isAnnotationPresent(org.hibernate.annotations.Table.class))) + { + throw new IllegalArgumentException("Class " + bean + " must contain the @Table annotation."); + } + + Map<String, String> propertyColumnMap = new HashMap<String, String>(); + + StringBuffer filterDefCondition = new StringBuffer(); + String filterName = StringUtils.EMPTY; + + Map<String, List<SecurityRule>> roleRuleMap = new LinkedHashMap<String, List<SecurityRule>>(); + for (SecurityRule securityRule : securityRules) + { + if (!roleRuleMap.containsKey(securityRule.getRole())) + { + roleRuleMap.put(securityRule.getRole(), new ArrayList<SecurityRule>()); + } + roleRuleMap.get(securityRule.getRole()).add(securityRule); + } + + for (Map.Entry<String, List<SecurityRule>> entry : roleRuleMap.entrySet()) + { + filterName += entry.getKey(); + + List<SecurityRule> rules = entry.getValue(); + if (rules == null || rules.isEmpty()) + { + log.debug("No rules defined for role {}", entry.getKey()); + continue; + } + + if (!rulesContainLoad(rules)) + { + log.debug("No LOAD rules defined for role {}", entry.getKey()); + continue; + } + + if (!StringUtils.isEmpty(filterDefCondition.toString())) + { + filterDefCondition.append(" OR "); + } + filterDefCondition.append("("); + StringBuffer subFilterCond = new StringBuffer(); + for (SecurityRule securityRule : rules) + { + if (!securityRule.getPermissions().contains(PermissionEnum.LOAD)) + { + log.debug("Skipping rule {} since it is not related to LOAD.", securityRule); + continue; + } + String property = securityRule.getProperty(); + filterName += property; + + Field field = FieldUtils.getField(beanClass, property); + + // @todo: annotations may also be defined on getters/setters... + propertyColumnMap.put(property, field.getAnnotation(Column.class).name()); + if (!StringUtils.isEmpty(subFilterCond.toString())) + { + subFilterCond.append(" AND "); + } + String modifier = null; + String startQuote = null; + String endQuote = null; + + if (String.class.isAssignableFrom(field.getType())) + { + startQuote = "\'"; + endQuote = startQuote; + } + else if (Number.class.isAssignableFrom(field.getType())) + { + startQuote = StringUtils.EMPTY; + endQuote = StringUtils.EMPTY; + } + + switch (securityRule.getModifier()) + { + case EQUALS : + modifier = " = "; + break; + + case NOT : + modifier = " != "; + break; + + default : + throw new IllegalArgumentException("Modifier " + securityRule.getModifier() + "not recognized."); + } + subFilterCond.append(field.getAnnotation(Column.class).name()); + subFilterCond.append(modifier); + if (StringUtils.isNotEmpty(startQuote)) + { + subFilterCond.append(startQuote); + } + subFilterCond.append(StringEscapeUtils.escapeSql(securityRule.getValue())); + if (StringUtils.isNotEmpty(endQuote)) + { + subFilterCond.append(endQuote); + } + + filterName += securityRule.getValue(); + } + filterDefCondition.append(subFilterCond); + filterDefCondition.append(")"); + } + + // filtername is unique, but untraceable + this.filterDefinition = new FilterDefinition(Integer.toString(filterName.hashCode()), filterDefCondition + .toString(), new HashMap()); + } + + /** + * @param rules + * @return + */ + private boolean rulesContainLoad(List<SecurityRule> rules) + { + for (SecurityRule rule : rules) + { + if (rule.getPermissions().contains(PermissionEnum.LOAD)) + { + return true; + } + } + return false; + } + + /** + * {@inheritDoc} + */ + public FilterDefinition getFilterDefinition() + { + return this.filterDefinition; + } + + /** + * {@inheritDoc} + */ + public String getName() + { + return this.filterDefinition.getFilterName(); + } + + /** + * {@inheritDoc} + */ + public Filter setParameter(String name, Object value) + { + return this; + } + + /** + * {@inheritDoc} + */ + @SuppressWarnings("unchecked") + public Filter setParameterList(String name, Collection values) + { + return this; + } + + /** + * {@inheritDoc} + */ + public Filter setParameterList(String name, Object[] values) + { + return this; + } + + /** + * {@inheritDoc} + */ + public void validate() throws HibernateException + { + // + } + +} Deleted: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-21 09:17:34 UTC (rev 673) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-21 14:57:26 UTC (rev 680) @@ -1,67 +0,0 @@ -/* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it - */ -package it.openutils.hibernate.security.filter; - -import it.openutils.hibernate.security.dataobject.SecurityRule; -import it.openutils.hibernate.security.filter.utils.SecurityRuleUtils; -import it.openutils.hibernate.security.services.SecurityRuleManager; - -import java.util.List; - -import org.acegisecurity.Authentication; -import org.acegisecurity.ConfigAttributeDefinition; -import org.apache.commons.collections.Predicate; - - -/** - * @author fcarone - * @version $Id$ - */ -public class SecurityRulePredicate implements Predicate -{ - - private Authentication authentication; - - private SecurityRuleManager securityRuleManager; - - private ConfigAttributeDefinition configAttribute; - - private SecurityRuleUtils ruleUtils = new SecurityRuleUtils(); - - /** - * @param authentication The current authentication - * @param configAttribute The config attribute of the current method invocation interceptor - * @param securityRuleManager The security rule manager to retrieve rules from - */ - public SecurityRulePredicate( - Authentication authentication, - ConfigAttributeDefinition configAttribute, - SecurityRuleManager securityRuleManager) - { - this.authentication = authentication; - this.securityRuleManager = securityRuleManager; - this.configAttribute = configAttribute; - } - - /** - * {@inheritDoc} - * If we return false here, the element will be removed from the original collection. - */ - @SuppressWarnings("unchecked") - public boolean evaluate(Object object) - { - List<String> roles = ruleUtils.getRolesFromAuthentication(authentication); - List<SecurityRule> rules = securityRuleManager.getRulesForRoles(ruleUtils.getClassName(object), roles); - - // @todo: this should be configurable - // denyAll by default - if (rules == null || rules.isEmpty()) - { - return false; - } - return (ruleUtils.checkPermissions(rules, configAttribute) && ruleUtils.checkRules(rules, object)); - } - - -} Copied: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java (from rev 677, trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java) =================================================================== --- tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java (rev 0) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-21 14:57:26 UTC (rev 680) @@ -0,0 +1,85 @@ +/* + * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + */ +package it.openutils.hibernate.security.filter; + +import it.openutils.hibernate.security.dataobject.SecurityRule; +import it.openutils.hibernate.security.filter.utils.SecurityRuleUtils; +import it.openutils.hibernate.security.services.SecurityRuleManager; + +import java.util.ArrayList; +import java.util.List; + +import org.acegisecurity.Authentication; +import org.acegisecurity.ConfigAttributeDefinition; +import org.apache.commons.collections.Predicate; +import org.apache.commons.lang.StringUtils; + + +/** + * @author fcarone + * @version $Id$ + */ +public class SecurityRulePredicate implements Predicate +{ + + private Authentication authentication; + + private SecurityRuleManager securityRuleManager; + + private ConfigAttributeDefinition configAttribute; + + private SecurityRuleUtils ruleUtils = new SecurityRuleUtils(); + + /** + * @param authentication The current authentication + * @param configAttribute The config attribute of the current method invocation interceptor + * @param securityRuleManager The security rule manager to retrieve rules from + */ + public SecurityRulePredicate( + Authentication authentication, + ConfigAttributeDefinition configAttribute, + SecurityRuleManager securityRuleManager) + { + this.authentication = authentication; + this.securityRuleManager = securityRuleManager; + this.configAttribute = configAttribute; + } + + /** + * {@inheritDoc} If we return false here, the element will be removed from the original collection. + */ + @SuppressWarnings("unchecked") + public boolean evaluate(Object object) + { + List<String> roles = ruleUtils.getRolesFromAuthentication(authentication); + List<SecurityRule> rules = findAllRules(object, roles); + + // @todo: this should be configurable + // denyAll by default + if (rules == null || rules.isEmpty()) + { + return false; + } + return (ruleUtils.checkPermissions(rules, configAttribute) && ruleUtils.checkRules(rules, object)); + } + + @SuppressWarnings("unchecked") + // @todo: needs unit test methods + private List<SecurityRule> findAllRules(Object object, List<String> roles) + { + List<SecurityRule> result = new ArrayList<SecurityRule>(); + + Class objectClass = object.getClass(); + while (!objectClass.isAssignableFrom(Object.class)) + { + result.addAll(securityRuleManager.getRulesForRoles( + StringUtils.substringBefore(objectClass.getName(), "$$"), + roles)); + + objectClass = objectClass.getSuperclass(); + } + return result; + } + +} Deleted: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-21 09:17:34 UTC (rev 673) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-21 14:57:26 UTC (rev 680) @@ -1,84 +0,0 @@ -/* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it - */ -package it.openutils.hibernate.security.services; - -import it.openutils.hibernate.security.dataobject.SecurityRule; - -import java.util.List; - -import org.hibernate.Filter; - - -/** - * @author fcarone - * @version $Id$ - */ -public interface SecurityRuleManager -{ - - /** - * @return All the defined {@link SecurityRule}s. - */ - List<SecurityRule> findAll(); - - /** - * @param filter The {@link SecurityRule} to use as search filter - * @return The list of matching {@link SecurityRule}s. - */ - List<SecurityRule> findFiltered(SecurityRule filter); - - /** - * @param id The id of the {@link SecurityRule} to load - * @return The {@link SecurityRule} with the given id - */ - SecurityRule load(Long id); - - /** - * @param id The id of the {@link SecurityRule} to load - * @return The {@link SecurityRule} with the given id, or null if it is not found - */ - SecurityRule loadIfAvailable(Long id); - - /** - * @param id The security rule id - * @return The removed {@link SecurityRule} - */ - boolean delete(Long id); - - /** - * @param securityRule The {@link SecurityRule} to save or update - */ - void saveOrUpdate(SecurityRule securityRule); - - /** - * @param securityRule The {@link SecurityRule} to save - * @return The id of the saved {@link SecurityRule} - */ - Long save(SecurityRule securityRule); - - /** - * @param securityRule The {@link SecurityRule} to update - */ - void update(SecurityRule securityRule); - - /** - * @param entity The entity to apply rules for - * @param rules The list of rules to apply - * @return The Hibernate Filter responding to the given criteria - * @throws SecurityException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws NoSuchFieldException - */ - public Filter getEntityFilterFromRules(String entity, List<SecurityRule> rules) throws SecurityException, - ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException; - - /** - * @param entity The entity we want rules for - * @param roles The list of roles - * @return The list of security rules matching entity - roles - */ - List<SecurityRule> getRulesForRoles(String entity, List<String> roles); -} Copied: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java (from rev 678, trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java) =================================================================== --- tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java (rev 0) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-21 14:57:26 UTC (rev 680) @@ -0,0 +1,92 @@ +/* + * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + */ +package it.openutils.hibernate.security.services; + +import it.openutils.hibernate.security.dataobject.SecurityRule; + +import java.util.List; + +import org.hibernate.Filter; + + +/** + * @author fcarone + * @version $Id$ + */ +public interface SecurityRuleManager +{ + + /** + * @return All the defined {@link SecurityRule}s. + */ + List<SecurityRule> findAll(); + + /** + * @param filter The {@link SecurityRule} to use as search filter + * @return The list of matching {@link SecurityRule}s. + */ + List<SecurityRule> findFiltered(SecurityRule filter); + + /** + * @param id The id of the {@link SecurityRule} to load + * @return The {@link SecurityRule} with the given id + */ + SecurityRule load(Long id); + + /** + * @param id The id of the {@link SecurityRule} to load + * @return The {@link SecurityRule} with the given id, or null if it is not found + */ + SecurityRule loadIfAvailable(Long id); + + /** + * @param id The security rule id + * @return The removed {@link SecurityRule} + */ + boolean delete(Long id); + + /** + * @param securityRule The {@link SecurityRule} to save or update + */ + void saveOrUpdate(SecurityRule securityRule); + + /** + * @param securityRule The {@link SecurityRule} to save + * @return The id of the saved {@link SecurityRule} + */ + Long save(SecurityRule securityRule); + + /** + * @param securityRule The {@link SecurityRule} to update + */ + void update(SecurityRule securityRule); + + /** + * @param entity The entity to apply rules for + * @param rules The list of rules to apply + * @return The Hibernate Filter responding to the given criteria + * @throws SecurityException + * @throws ClassNotFoundException + * @throws InstantiationException + * @throws IllegalAccessException + * @throws NoSuchFieldException + */ + public Filter getEntityFilterFromRules(String entity, List<SecurityRule> rules) throws SecurityException, + ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException; + + /** + * @param entity The entity name we want rules for + * @param roles The list of roles + * @return The list of security rules matching entity - roles + */ + List<SecurityRule> getRulesForRoles(String entity, List<String> roles); + + /** + * @param entity The entity we want rules for + * @param roles The list of roles + * @return The list of security rules matching entity - roles + */ + List<SecurityRule> getRulesForRoles(Object entity, List<String> roles); + +} Deleted: tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-21 09:17:34 UTC (rev 673) +++ tags/openutils-hibernate-security-0.0.4/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-21 14:57:26 UTC (rev 680) @@ -1,122 +0,0 @@ -/* - * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it - */ -package it.openutils.hibernate.security.services.impl; - -import it.openutils.hibernate.security.dao.SecurityRuleDAO; -import ... [truncated message content] |
From: <fc...@us...> - 2008-02-21 14:57:15
|
Revision: 679 http://openutils.svn.sourceforge.net/openutils/?rev=679&view=rev Author: fcarone Date: 2008-02-21 06:57:01 -0800 (Thu, 21 Feb 2008) Log Message: ----------- [maven-release-plugin] prepare release openutils-hibernate-security-0.0.4 Modified Paths: -------------- trunk/openutils-hibernate-security/pom.xml Modified: trunk/openutils-hibernate-security/pom.xml =================================================================== --- trunk/openutils-hibernate-security/pom.xml 2008-02-21 14:55:07 UTC (rev 678) +++ trunk/openutils-hibernate-security/pom.xml 2008-02-21 14:57:01 UTC (rev 679) @@ -9,7 +9,7 @@ <groupId>net.sourceforge.openutils</groupId> <artifactId>openutils-hibernate-security</artifactId> <name>openutils hibernate security</name> - <version>0.0.4-SNAPSHOT</version> + <version>0.0.4</version> <description>Hibernate Security classes</description> <properties> <spring.version>2.5.1</spring.version> @@ -220,4 +220,10 @@ <scope>test</scope> </dependency> </dependencies> + + <scm> + <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.4</connection> + <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.4</developerConnection> + <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-hibernate-security-0.0.4</url> + </scm> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 14:55:13
|
Revision: 678 http://openutils.svn.sourceforge.net/openutils/?rev=678&view=rev Author: fcarone Date: 2008-02-21 06:55:07 -0800 (Thu, 21 Feb 2008) Log Message: ----------- getAllRules manager method added Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-21 14:54:07 UTC (rev 677) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-21 14:55:07 UTC (rev 678) @@ -76,9 +76,17 @@ ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException; /** + * @param entity The entity name we want rules for + * @param roles The list of roles + * @return The list of security rules matching entity - roles + */ + List<SecurityRule> getRulesForRoles(String entity, List<String> roles); + + /** * @param entity The entity we want rules for * @param roles The list of roles * @return The list of security rules matching entity - roles */ - List<SecurityRule> getRulesForRoles(String entity, List<String> roles); + List<SecurityRule> getRulesForRoles(Object entity, List<String> roles); + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 14:54:13
|
Revision: 677 http://openutils.svn.sourceforge.net/openutils/?rev=677&view=rev Author: fcarone Date: 2008-02-21 06:54:07 -0800 (Thu, 21 Feb 2008) Log Message: ----------- get all available rules for the given entity Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-21 14:52:50 UTC (rev 676) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-21 14:54:07 UTC (rev 677) @@ -7,11 +7,13 @@ import it.openutils.hibernate.security.filter.utils.SecurityRuleUtils; import it.openutils.hibernate.security.services.SecurityRuleManager; +import java.util.ArrayList; import java.util.List; import org.acegisecurity.Authentication; import org.acegisecurity.ConfigAttributeDefinition; import org.apache.commons.collections.Predicate; +import org.apache.commons.lang.StringUtils; /** @@ -45,14 +47,13 @@ } /** - * {@inheritDoc} - * If we return false here, the element will be removed from the original collection. + * {@inheritDoc} If we return false here, the element will be removed from the original collection. */ @SuppressWarnings("unchecked") public boolean evaluate(Object object) { List<String> roles = ruleUtils.getRolesFromAuthentication(authentication); - List<SecurityRule> rules = securityRuleManager.getRulesForRoles(ruleUtils.getClassName(object), roles); + List<SecurityRule> rules = findAllRules(object, roles); // @todo: this should be configurable // denyAll by default @@ -63,5 +64,22 @@ return (ruleUtils.checkPermissions(rules, configAttribute) && ruleUtils.checkRules(rules, object)); } + @SuppressWarnings("unchecked") + // @todo: needs unit test methods + private List<SecurityRule> findAllRules(Object object, List<String> roles) + { + List<SecurityRule> result = new ArrayList<SecurityRule>(); + Class objectClass = object.getClass(); + while (!objectClass.isAssignableFrom(Object.class)) + { + result.addAll(securityRuleManager.getRulesForRoles( + StringUtils.substringBefore(objectClass.getName(), "$$"), + roles)); + + objectClass = objectClass.getSuperclass(); + } + return result; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 676 http://openutils.svn.sourceforge.net/openutils/?rev=676&view=rev Author: fcarone Date: 2008-02-21 06:52:50 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Get all rules from the given object Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-21 14:46:24 UTC (rev 675) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-21 14:52:50 UTC (rev 676) @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.hibernate.Filter; @@ -20,6 +21,7 @@ */ public class SecurityRuleManagerImpl implements SecurityRuleManager { + private SecurityRuleDAO securityRuleDAO; /** @@ -119,4 +121,27 @@ } return rules; } + + /** + * {@inheritDoc} + */ + public List<SecurityRule> getRulesForRoles(Object entity, List<String> roles) + { + return findAllRules(entity, roles); + } + + @SuppressWarnings("unchecked") + private List<SecurityRule> findAllRules(Object object, List<String> roles) + { + List<SecurityRule> result = new ArrayList<SecurityRule>(); + + Class objectClass = object.getClass(); + while (!objectClass.isAssignableFrom(Object.class)) + { + result.addAll(getRulesForRoles(StringUtils.substringBefore(objectClass.getName(), "$$"), roles)); + + objectClass = objectClass.getSuperclass(); + } + return result; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 14:46:19
|
Revision: 675 http://openutils.svn.sourceforge.net/openutils/?rev=675&view=rev Author: fcarone Date: 2008-02-21 06:46:24 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Use FieldUtils to get fields. Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-21 14:31:05 UTC (rev 674) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-21 14:46:24 UTC (rev 675) @@ -93,7 +93,7 @@ } String entity = filter.getClass().getCanonicalName(); - List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles); + List<SecurityRule> rules = securityRuleManager.getRulesForRoles(filter, roles); if (rules.isEmpty()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 14:31:13
|
Revision: 674 http://openutils.svn.sourceforge.net/openutils/?rev=674&view=rev Author: fcarone Date: 2008-02-21 06:31:05 -0800 (Thu, 21 Feb 2008) Log Message: ----------- use FieldUtils to get the class field. Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-21 09:17:34 UTC (rev 673) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-21 14:31:05 UTC (rev 674) @@ -30,6 +30,7 @@ import javax.persistence.Entity; import javax.persistence.Table; +import org.acegisecurity.util.FieldUtils; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.hibernate.Filter; @@ -131,7 +132,7 @@ String property = securityRule.getProperty(); filterName += property; - Field field = beanClass.getDeclaredField(property); + Field field = FieldUtils.getField(beanClass, property); // @todo: annotations may also be defined on getters/setters... propertyColumnMap.put(property, field.getAnnotation(Column.class).name()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-21 09:17:31
|
Revision: 673 http://openutils.svn.sourceforge.net/openutils/?rev=673&view=rev Author: fcarone Date: 2008-02-21 01:17:34 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Hsqldb datatype factory added Added Paths: ----------- trunk/openutils-testing/src/main/java/it/openutils/testing/dbunit/datatype/ trunk/openutils-testing/src/main/java/it/openutils/testing/dbunit/datatype/HsqlDatatypeFactory.java Added: trunk/openutils-testing/src/main/java/it/openutils/testing/dbunit/datatype/HsqlDatatypeFactory.java =================================================================== --- trunk/openutils-testing/src/main/java/it/openutils/testing/dbunit/datatype/HsqlDatatypeFactory.java (rev 0) +++ trunk/openutils-testing/src/main/java/it/openutils/testing/dbunit/datatype/HsqlDatatypeFactory.java 2008-02-21 09:17:34 UTC (rev 673) @@ -0,0 +1,33 @@ +/* + * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + */ +package it.openutils.testing.dbunit.datatype; + +import java.sql.Types; + +import org.dbunit.dataset.datatype.DataType; +import org.dbunit.dataset.datatype.DataTypeException; +import org.dbunit.dataset.datatype.DefaultDataTypeFactory; + + +/** + * @author fcarone + * @version $Id: HsqlDatatypeFactory.java 672 2008-02-20 17:14:54Z fcarone $ + */ +public class HsqlDatatypeFactory extends DefaultDataTypeFactory +{ + + /** + * {@inheritDoc} + * Needed to fix Boolean type recognition for HSQLDB + */ + @Override + public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException + { + if (sqlType == Types.BOOLEAN) + { + return DataType.BOOLEAN; + } + return super.createDataType(sqlType, sqlTypeName); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-20 17:14:49
|
Revision: 672 http://openutils.svn.sourceforge.net/openutils/?rev=672&view=rev Author: fcarone Date: 2008-02-20 09:14:54 -0800 (Wed, 20 Feb 2008) Log Message: ----------- Id property set on java files Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManager.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManagerImpl.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java Property Changed: ---------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManager.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManagerImpl.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-20 17:14:54 UTC (rev 672) @@ -37,7 +37,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ @Aspect public class AOPSecurity Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java 2008-02-20 17:14:54 UTC (rev 672) @@ -9,7 +9,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public interface SecurityRuleDAO extends HibernateDAO<SecurityRule, Long> { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/SecurityRuleDAO.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java 2008-02-20 17:14:54 UTC (rev 672) @@ -10,7 +10,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class SecurityRuleDAOImpl extends HibernateDAOImpl<SecurityRule, Long> implements SecurityRuleDAO { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dao/impl/SecurityRuleDAOImpl.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java 2008-02-20 17:14:54 UTC (rev 672) @@ -5,7 +5,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public enum ModifierEnum { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/ModifierEnum.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java 2008-02-20 17:14:54 UTC (rev 672) @@ -5,7 +5,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public enum PermissionEnum { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/PermissionEnum.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java 2008-02-20 17:14:54 UTC (rev 672) @@ -26,7 +26,7 @@ /** * @author fcarone - * @version $Id: $ A security rule + * @version $Id$ A security rule */ @Entity @Table(name = "SECURITY_RULE") Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/dataobject/SecurityRule.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2008-02-20 17:14:54 UTC (rev 672) @@ -41,7 +41,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class JavaBeanFilter implements Filter { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java 2008-02-20 17:14:54 UTC (rev 672) @@ -31,7 +31,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class SecurityRuleAccessDecisionVoter extends SecurityRuleBaseHandler implements AccessDecisionVoter { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java 2008-02-20 17:14:54 UTC (rev 672) @@ -18,7 +18,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class SecurityRuleAfterInvocationHandler extends SecurityRuleBaseHandler implements AfterInvocationProvider { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAfterInvocationHandler.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java 2008-02-20 17:14:54 UTC (rev 672) @@ -13,7 +13,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public abstract class SecurityRuleBaseHandler { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleBaseHandler.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java 2008-02-20 17:14:54 UTC (rev 672) @@ -16,7 +16,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class SecurityRulePredicate implements Predicate { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRulePredicate.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java 2008-02-20 17:14:54 UTC (rev 672) @@ -23,7 +23,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class SecurityRuleUtils { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/utils/SecurityRuleUtils.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2008-02-20 17:14:54 UTC (rev 672) @@ -12,7 +12,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public interface SecurityRuleManager { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-20 17:14:54 UTC (rev 672) @@ -16,7 +16,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class SecurityRuleManagerImpl implements SecurityRuleManager { Property changes on: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java 2008-02-20 17:14:54 UTC (rev 672) @@ -12,7 +12,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class HsqlDatatypeFactory extends DefaultDataTypeFactory { Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2008-02-20 17:14:54 UTC (rev 672) @@ -38,7 +38,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ @ContextConfiguration(locations = {"/spring-tests.xml" }) @DbUnitExecution(datasets = {"/SecurityIntegrationTest-load.xml" }, dataSource = "dataSource", // Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java 2008-02-20 17:14:54 UTC (rev 672) @@ -8,7 +8,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public interface DummyDAO extends HibernateDAO<DummyDataobject, Long> { Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java 2008-02-20 17:14:54 UTC (rev 672) @@ -8,7 +8,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class DummyDaoImpl extends HibernateDAOImpl<DummyDataobject, Long> implements DummyDAO { Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2008-02-20 17:14:54 UTC (rev 672) @@ -11,7 +11,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ @Entity @Table(name = "DUMMYDATAOBJECT") Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManager.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManager.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManager.java 2008-02-20 17:14:54 UTC (rev 672) @@ -8,7 +8,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public interface DummyObjectManager { Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManager.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManagerImpl.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManagerImpl.java 2008-02-20 17:14:54 UTC (rev 672) @@ -8,7 +8,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class DummyObjectManagerImpl implements DummyObjectManager { Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyObjectManagerImpl.java ___________________________________________________________________ Name: svn:keywords + Id Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java 2008-02-20 16:56:50 UTC (rev 671) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java 2008-02-20 17:14:54 UTC (rev 672) @@ -17,7 +17,7 @@ /** * @author fcarone - * @version $Id: $ + * @version $Id$ */ public class JavaBeanFilterTest { Property changes on: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/filter/JavaBeanFilterTest.java ___________________________________________________________________ Name: svn:keywords + Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fc...@us...> - 2008-02-20 16:56:49
|
Revision: 671 http://openutils.svn.sourceforge.net/openutils/?rev=671&view=rev Author: fcarone Date: 2008-02-20 08:56:50 -0800 (Wed, 20 Feb 2008) Log Message: ----------- [maven-release-plugin] prepare for next development iteration Modified Paths: -------------- trunk/openutils-hibernate-security/pom.xml Modified: trunk/openutils-hibernate-security/pom.xml =================================================================== --- trunk/openutils-hibernate-security/pom.xml 2008-02-20 16:56:29 UTC (rev 670) +++ trunk/openutils-hibernate-security/pom.xml 2008-02-20 16:56:50 UTC (rev 671) @@ -9,7 +9,7 @@ <groupId>net.sourceforge.openutils</groupId> <artifactId>openutils-hibernate-security</artifactId> <name>openutils hibernate security</name> - <version>0.0.3</version> + <version>0.0.4-SNAPSHOT</version> <description>Hibernate Security classes</description> <properties> <spring.version>2.5.1</spring.version> @@ -220,10 +220,4 @@ <scope>test</scope> </dependency> </dependencies> - - <scm> - <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.3</connection> - <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/tags/openutils-hibernate-security-0.0.3</developerConnection> - <url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/tags/openutils-hibernate-security-0.0.3</url> - </scm> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |