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.
|