mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Firts stage of Audit work
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3293 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
66
source/java/org/alfresco/service/AnnotationTest.java
Normal file
66
source/java/org/alfresco/service/AnnotationTest.java
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (C) 2005 Alfresco, Inc.
|
||||
*
|
||||
* Licensed under the Mozilla Public License version 1.1
|
||||
* with a permitted attribution clause. You may obtain a
|
||||
* copy of the License at
|
||||
*
|
||||
* http://www.alfresco.org/legal/license.txt
|
||||
*
|
||||
* 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 org.alfresco.service;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class AnnotationTest extends TestCase
|
||||
{
|
||||
|
||||
public AnnotationTest()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
public AnnotationTest(String arg0)
|
||||
{
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
|
||||
public void testAnnotations() throws Exception, NoSuchMethodException
|
||||
{
|
||||
Class clazz = AnnotationTestInterface.class;
|
||||
|
||||
Method method = clazz.getMethod("noArgs", new Class[]{});
|
||||
assertTrue(method.isAnnotationPresent(Auditable.class));
|
||||
Auditable auditable = method.getAnnotation(Auditable.class);
|
||||
assertEquals(auditable.key(), -1);
|
||||
assertEquals(auditable.parameters().length, 0);
|
||||
|
||||
|
||||
method = clazz.getMethod("getString", new Class[]{String.class, String.class});
|
||||
assertTrue(method.isAnnotationPresent(Auditable.class));
|
||||
auditable = method.getAnnotation(Auditable.class);
|
||||
assertEquals(auditable.key(), 0);
|
||||
assertEquals(auditable.parameters().length, 2);
|
||||
assertEquals(auditable.parameters()[0], "one");
|
||||
assertEquals(auditable.parameters()[1], "two");
|
||||
|
||||
|
||||
method = clazz.getMethod("getAnotherString", new Class[]{String.class});
|
||||
assertTrue(method.isAnnotationPresent(Auditable.class));
|
||||
auditable = method.getAnnotation(Auditable.class);
|
||||
assertEquals(auditable.key(), 0);
|
||||
assertEquals(auditable.parameters().length, 1);
|
||||
assertEquals(auditable.parameters()[0], "one");
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2005 Alfresco, Inc.
|
||||
*
|
||||
* Licensed under the Mozilla Public License version 1.1
|
||||
* with a permitted attribution clause. You may obtain a
|
||||
* copy of the License at
|
||||
*
|
||||
* http://www.alfresco.org/legal/license.txt
|
||||
*
|
||||
* 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 org.alfresco.service;
|
||||
|
||||
/**
|
||||
* An interface to test the use of the auditable annotation.
|
||||
*
|
||||
* @author Andy Hind
|
||||
*/
|
||||
public interface AnnotationTestInterface
|
||||
{
|
||||
@Auditable()
|
||||
public void noArgs();
|
||||
|
||||
@Auditable(key = 0, parameters = {"one", "two"})
|
||||
public String getString(String one, String two);
|
||||
|
||||
@Auditable(key = 0, parameters = {"one"})
|
||||
public String getAnotherString(String one);
|
||||
}
|
51
source/java/org/alfresco/service/Auditable.java
Normal file
51
source/java/org/alfresco/service/Auditable.java
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2005 Alfresco, Inc.
|
||||
*
|
||||
* Licensed under the Mozilla Public License version 1.1
|
||||
* with a permitted attribution clause. You may obtain a
|
||||
* copy of the License at
|
||||
*
|
||||
* http://www.alfresco.org/legal/license.txt
|
||||
*
|
||||
* 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 org.alfresco.service;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Annotation to defined key and parameter names for the auditing API.
|
||||
*
|
||||
* If this annotation is present on a public service interface it will be considered for auditing. If it is not present the method will never be audited.
|
||||
*
|
||||
* Note that the service name and method name can be found from the bean definition and the method invocation.
|
||||
*
|
||||
* @author Andy Hind
|
||||
*/
|
||||
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Auditable
|
||||
{
|
||||
/**
|
||||
* The position of the key argument in the method list.
|
||||
*
|
||||
* @return -1 indicates there is no key
|
||||
*/
|
||||
int key() default -1;
|
||||
|
||||
/**
|
||||
* The names of the parameters
|
||||
*
|
||||
* @return a String[] of parameter names, the default is an empty array.
|
||||
*/
|
||||
String[] parameters() default {};
|
||||
}
|
Reference in New Issue
Block a user