You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jbo...@li...> - 2006-02-07 10:32:32
|
Author: mar...@jb... Date: 2006-02-07 05:32:26 -0500 (Tue, 07 Feb 2006) New Revision: 2291 Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/InstrumentedReteTuple.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java Log: -Fixed InstrumentedReteTuple and the FieldConstraintTest class that uses it. Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/InstrumentedReteTuple.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/InstrumentedReteTuple.java 2006-02-07 09:26:50 UTC (rev 2290) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/InstrumentedReteTuple.java 2006-02-07 10:32:26 UTC (rev 2291) @@ -10,11 +10,7 @@ (FactHandleImpl) handle ); } - public InstrumentedReteTuple(int column, - FactHandle handle, - WorkingMemory workingMemory) { - super( column, - (FactHandleImpl) handle, - (WorkingMemoryImpl) workingMemory ); + public InstrumentedReteTuple(FactHandle handle) { + super( (FactHandleImpl) handle ); } } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java 2006-02-07 09:26:50 UTC (rev 2290) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java 2006-02-07 10:32:26 UTC (rev 2291) @@ -135,9 +135,7 @@ Cheese cheddar0 = new Cheese( "cheddar", 5 ); FactHandle f0 = workingMemory.assertObject( cheddar0 ); - InstrumentedReteTuple tuple = new InstrumentedReteTuple( 0, - f0, - workingMemory ); + InstrumentedReteTuple tuple = new InstrumentedReteTuple( f0 ); Cheese cheddar1 = new Cheese( "cheddar", 10 ); @@ -205,9 +203,7 @@ 5 ); FactHandle f0 = workingMemory.assertObject( cheddar0 ); - InstrumentedReteTuple tuple = new InstrumentedReteTuple( 0, - f0, - workingMemory ); + InstrumentedReteTuple tuple = new InstrumentedReteTuple( f0 ); Cheese cheddar1 = new Cheese( "cheddar", 10 ); |
From: <jbo...@li...> - 2006-02-07 09:27:00
|
Author: mic...@jb... Date: 2006-02-07 04:26:50 -0500 (Tue, 07 Feb 2006) New Revision: 2290 Added: trunk/labs/jbossrules/repository/drools-asm/ trunk/labs/jbossrules/repository/drools-asm/drools-asm/ trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/ trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.jar trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.pom Log: depends on jarjar version of ASM (drools specific). its only small, no worries. Added: trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.pom =================================================================== --- trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.pom 2006-02-07 09:26:03 UTC (rev 2289) +++ trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.pom 2006-02-07 09:26:50 UTC (rev 2290) @@ -0,0 +1,7 @@ +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>drools-asm</groupId> + <artifactId>drools-asm</artifactId> + <version>2.2.1</version> + <dependencies/> +</project> Property changes on: trunk/labs/jbossrules/repository/drools-asm/drools-asm/2.2.1/drools-asm-2.2.1.pom ___________________________________________________________________ Name: svn:eol-style + native |
From: <jbo...@li...> - 2006-02-07 09:26:08
|
Author: mic...@jb... Date: 2006-02-07 04:26:03 -0500 (Tue, 07 Feb 2006) New Revision: 2289 Modified: trunk/labs/jbossrules/drools-core/pom.xml Log: depends on jarjar version of ASM (drools specific). its only small, no worries. Modified: trunk/labs/jbossrules/drools-core/pom.xml =================================================================== --- trunk/labs/jbossrules/drools-core/pom.xml 2006-02-07 09:17:21 UTC (rev 2288) +++ trunk/labs/jbossrules/drools-core/pom.xml 2006-02-07 09:26:03 UTC (rev 2289) @@ -20,7 +20,25 @@ </repositories> <dependencies> + + + <!-- required for util.proxy stuff. It should be refactored into tools module. --> <dependency> + <groupId>cglib</groupId> + <artifactId>cglib</artifactId> + <version>2.1_3</version> + </dependency> + + + <!-- required for asm stuff. Using jarjar to isolate ASM version. (its very small) --> + <dependency> + <groupId>drools-asm</groupId> + <artifactId>drools-asm</artifactId> + <version>2.2.1</version> + </dependency> + + <!-- following are required for parser (lang). May be refactored out of core module. --> + <dependency> <groupId>jung</groupId> <artifactId>jung</artifactId> <version>1.7.2</version> @@ -34,15 +52,9 @@ <groupId>jparsec</groupId> <artifactId>jparsec</artifactId> <version>0.01</version> - </dependency> - <dependency> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - <version>2.1_3</version> - </dependency> - + </dependency> - <!-- only needed for the default expander in lang.. remove when it is refactored. --> + <!-- only needed for the default expander in parser/lang.. to remove when it is refactored into another module. --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> |
Author: mic...@jb... Date: 2006-02-07 04:17:21 -0500 (Tue, 07 Feb 2006) New Revision: 2288 Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessorGenerator.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/FieldAccessorGeneratorTest.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestBean.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestObject.java Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldOrderInspector.java Log: ASM generated field accessor Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,168 @@ +package org.drools.util.asm; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +import org.drools.asm.AnnotationVisitor; +import org.drools.asm.Attribute; +import org.drools.asm.ClassReader; +import org.drools.asm.ClassVisitor; + +import org.drools.asm.FieldVisitor; +import org.drools.asm.MethodVisitor; +import org.drools.asm.Opcodes; + + +/** + * Visit a POJO user class, and extract the property getter methods that are public, in the + * order in which they are declared actually in the class itself (not using introspection). + * + * @author Michael Neale + */ +public class ClassFieldInspector { + + private List methods; + + /** + * @param clazz The class that the fields to be shadowed are extracted for. + * @throws IOException + */ + public ClassFieldInspector(Class clazz) throws IOException { + String name = getResourcePath( clazz ); + InputStream stream = this.getClass().getResourceAsStream(name); + ClassReader reader = new ClassReader(stream); + ClassFieldVisitor visitor = new ClassFieldVisitor(clazz); + reader.accept(visitor, false); + this.methods = visitor.getPropertyGetters(); + } + + /** + * Convert it to a form so we can load the bytes from the classpath. + */ + private String getResourcePath(Class clazz) { + return "/" + clazz.getName().replaceAll("\\.", "/") + ".class"; + } + + /** + * Return a list in order of which the getters (and "is") methods were found. + * This should only be done once when compiling a rulebase ideally. + */ + public List getPropertyGetters() { + return methods; + } + + + /** + * Using the ASM classfield extractor to pluck it out in the order they appear in the class file. + * @author Michael Neale + */ + static class ClassFieldVisitor implements ClassVisitor { + + private List methodList = new ArrayList(); + private Class clazz; + + + ClassFieldVisitor(Class cls) { + this.clazz = cls; + } + + + public List getPropertyGetters() { + return methodList; + } + + + + + public void visit(int arg0, + int arg1, + String arg2, + String arg3, + String[] arg4, + String arg5) {} + + public void visitInnerClass(String arg0, + String arg1, + String arg2, + int arg3) {} + + public void visitField(int access, + String arg1, + String arg2, + Object arg3, + Attribute arg4) {} + + + public void visitAttribute(Attribute arg0) {} + + public void visitEnd() {} + + + public void visit(int arg0, + int arg1, + String arg2, + String arg3, + String arg4, + String[] arg5) { + + + } + + + public void visitSource(String arg0, + String arg1) { + + + } + + + public void visitOuterClass(String arg0, + String arg1, + String arg2) { + + + } + + + public AnnotationVisitor visitAnnotation(String arg0, + boolean arg1) { + + return null; + } + + + public FieldVisitor visitField(int arg0, + String arg1, + String arg2, + String arg3, + Object arg4) { + + return null; + } + + + public MethodVisitor visitMethod(int access, + String name, + String desc, + String signature, + String[] exceptions) { + //only want public methods that start with 'get' or 'is' + if (access == Opcodes.ACC_PUBLIC) { + if (name.startsWith("get") || name.startsWith("is")) { + try { + Method method = clazz.getMethod(name, null); + methodList.add(method); + } catch (NoSuchMethodException e) { + //TODO: must be a better way. We only want fields with no args. + } + } + } + return null; + } + + + } +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessor.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessor.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,21 @@ +package org.drools.util.asm; + +/** + * This provides "field" access to getters on a given class. + * Implementations are generated into byte code (using a switchtable) + * when a new class is encountered. + * + * @author Michael Neale + */ +public interface FieldAccessor { + + /** + * Returns the "field" corresponding to the order in which it is in the object (class). + * + * @param obj The object for the field to be extracted from. + * @param idx The index of the "field". + * @return Appropriate return type. Primitives are boxed to the corresponding type. + */ + public Object getFieldByIndex(Object obj, int idx); + +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessor.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessorGenerator.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessorGenerator.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessorGenerator.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,284 @@ +package org.drools.util.asm; + + +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +import org.drools.asm.ClassWriter; +import org.drools.asm.Label; +import org.drools.asm.MethodVisitor; +import org.drools.asm.Opcodes; +import org.drools.asm.Type; + +/** + * Will provide implementations of FieldAccessor as needed. + * + * There is no proxying involved. + * + * Uses ASM to generate a implementation of a FieldAccessor. + * Uses tableswitch so it is as fast as humanly possible. + * @author Michael Neale + */ +public class FieldAccessorGenerator { + + //used to make sure generated classes are unique... + private static final String GEN_PACKAGE_PREFIX = "org.drools.fieldaccess."; + private final Map cache = new HashMap(); + + /** + * Looks up an instance of a field accessor for the given class. + * If none is found it will generate one, and then cache it. + */ + public FieldAccessor getInstanceFor(Class cls) throws Exception { + Object obj = cache.get(cls); + if (obj == null) { + obj = newInstanceFor(cls); + cache.put(cls, obj); + } + return (FieldAccessor) obj; + } + + /** + * Generate a new implementation for of a FieldAccessor for the given class. + * No caching. Uses ASM. + */ + public FieldAccessor newInstanceFor(Class cls) throws Exception { + + ClassFieldInspector inspector = new ClassFieldInspector(cls); + Method[] getters = (Method[]) inspector.getPropertyGetters().toArray(new Method[] {}); + + String generatedClassName = GEN_PACKAGE_PREFIX + cls.getName(); + + byte[] generatedClass = AccessorClassFactory.generateClass(getters, cls, generatedClassName); + ByteArrayClassLoader cl = new ByteArrayClassLoader( Thread.currentThread().getContextClassLoader() ); + cl.addByteArray( generatedClassName, generatedClass); + return (FieldAccessor) cl.loadClass( generatedClassName ).newInstance(); + } + + + + /** + * OK, deep breaths, this is where it all happens... + * If you don't know ASM, and a bit about bytecode, then move along, theres nothing to see here. + * + * @author Michael Neale + */ + static class AccessorClassFactory + implements + Opcodes { + + private static final String GET_FIELD_BY_INDEX_METHOD_NAME = "getFieldByIndex"; + + private static String getShortName(Class cls) { + String name = cls.getName(); + String packageName = cls.getPackage().getName(); + return name.substring(packageName.length() + 1, name.length()); + } + + public static byte[] generateClass(Method getters[], Class targetClass, String generatedClassName) throws Exception { + + ClassWriter cw = new ClassWriter( true ); + + generatedClassName = generatedClassName.replaceAll("\\.", "/"); + + cw.visit( V1_2, + ACC_PUBLIC + ACC_SUPER, + generatedClassName, + null, + "java/lang/Object", + new String[]{Type.getInternalName(FieldAccessor.class)}); + + cw.visitSource( getShortName(targetClass) + ".java", + null ); + + doConstructor( cw ); + + doMethods( cw, Type.getInternalName(targetClass), getters ); + + cw.visitEnd(); + + return cw.toByteArray(); + } + + private static void doMethods(ClassWriter cw, String targetType, Method[] getters) { + + + + + MethodVisitor mv; + mv = cw.visitMethod( ACC_PUBLIC, + GET_FIELD_BY_INDEX_METHOD_NAME, + "(Ljava/lang/Object;I)Ljava/lang/Object;", + null, + null ); + mv.visitCode(); + Label entry = new Label(); + mv.visitLabel( entry ); + mv.visitVarInsn( ALOAD, + 1 ); + mv.visitTypeInsn( CHECKCAST, + targetType ); + int target = 3; + mv.visitVarInsn( ASTORE, + target ); //this is the actual casted object + Label start = new Label(); + mv.visitLabel( start ); + + mv.visitVarInsn( ILOAD, + 2 ); //the index, I think. + //END BOILERPLATE + + Label[] switchItems = new Label[getters.length]; + for (int i= 0; i < getters.length; i++) { + switchItems[i] = new Label(); + } + + //setup switch statment (with default) + Label defaultSwitch = new Label(); + mv.visitTableSwitchInsn( 0, + switchItems.length - 1, + defaultSwitch, + switchItems ); + + + //START switch items + for (int i= 0; i < getters.length; i++) { + Method method = getters[i]; + if (method.getReturnType().isPrimitive()) { + doSwitchItemBoxed( mv, switchItems[i], + target, targetType, method.getName(), method.getReturnType()); + } else { + doSwitchItemObject(mv, switchItems[i], target, targetType, method.getName(), method.getReturnType()); + } + } + + //the default item... + mv.visitLabel( defaultSwitch ); + mv.visitInsn( ACONST_NULL ); + mv.visitInsn( ARETURN ); + + Label endLabel = new Label(); + mv.visitLabel( endLabel ); + + mv.visitMaxs( 0,0 ); //dummy values, its calculated anyway + mv.visitEnd(); + } + + /** a switch item that requires autoboxing */ + private static void doSwitchItemBoxed(MethodVisitor mv, Label switchItem, + int target, String targetType, String targetMethod, + Class scalarType) { + Class boxType = null; + boxType = getBoxType( scalarType ); + String scalarDescriptor = Type.getDescriptor(scalarType); + String internalBoxName = Type.getInternalName(boxType); + mv.visitLabel( switchItem ); + mv.visitTypeInsn( NEW, + internalBoxName ); + mv.visitInsn( DUP ); + mv.visitVarInsn( ALOAD, + target ); + mv.visitMethodInsn( INVOKEVIRTUAL, + targetType, + targetMethod, + "()" + scalarDescriptor ); + mv.visitMethodInsn( INVOKESPECIAL, + internalBoxName, + "<init>", + "(" + scalarDescriptor + ")V" ); + mv.visitInsn( ARETURN ); + } + + /** Work out the appropriate box type for a scalar/primitive class */ + private static Class getBoxType(Class scalarType) { + + if (scalarType == int.class) { + return Integer.class; + } else if (scalarType == boolean.class) { + return Boolean.class; + } else if (scalarType == char.class) { + return Character.class; + } else if (scalarType == byte.class) { + return Byte.class; + } else if (scalarType == short.class) { + return Short.class; + } else if (scalarType == long.class) { + return Long.class; + } else if (scalarType == float.class) { + return Float.class; + } else if (scalarType == double.class) { + return Double.class; + } else if (scalarType == void.class) { + return Void.class; + } else { + throw new IllegalArgumentException("Unknown scalar type: " + scalarType.getName()); + } + + } + + /** A regular switch item, which doesn't require boxing */ + private static void doSwitchItemObject(MethodVisitor mv, Label label, + int target, String targetType, String targetMethod, Class returnClass) { + + String returnType = "()" + Type.getDescriptor(returnClass); + mv.visitLabel( label ); + mv.visitVarInsn( ALOAD, + target ); + mv.visitMethodInsn( INVOKEVIRTUAL, + targetType, + targetMethod, + returnType ); + mv.visitInsn( ARETURN ); + } + + private static void doConstructor(ClassWriter cw) { + MethodVisitor mv; + mv = cw.visitMethod( ACC_PUBLIC, + "<init>", + "()V", + null, + null ); + mv.visitCode(); + Label l0 = new Label(); + mv.visitLabel( l0 ); + mv.visitLineNumber( 5, + l0 ); + mv.visitVarInsn( ALOAD, + 0 ); + mv.visitMethodInsn( INVOKESPECIAL, + "java/lang/Object", + "<init>", + "()V" ); + mv.visitInsn( RETURN ); + Label l1 = new Label(); + mv.visitLabel( l1 ); +// mv.visitLocalVariable( "this", +// "Lcom/something/MyObjectFieldAccessor;", +// null, +// l0, +// l1, +// 0 ); + mv.visitMaxs( 1, + 1 ); + mv.visitEnd(); + } + } + + /** + * Simple classloader for the ASM generated accessors. + * @author Michael Neale + */ + static class ByteArrayClassLoader extends ClassLoader { + + public ByteArrayClassLoader(ClassLoader parent) { + super(parent); + } + public void addByteArray(String name, byte[] bytes) + { + defineClass(name, bytes, 0, bytes.length); + } + + } + +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/asm/FieldAccessorGenerator.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldOrderInspector.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldOrderInspector.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldOrderInspector.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -52,7 +52,7 @@ /** - * Using the ASM classfield extractor to pluck it out in the order they appear in the class file. + * Using ASM pluck it out in the order they appear in the class file. * @author Michael Neale */ static class ClassFieldVisitor implements ClassVisitor { Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,53 @@ +package org.drools.util.asm; + +import java.lang.reflect.Method; + +import junit.framework.TestCase; + +public class ClassFieldInspectorTest extends TestCase { + + public void testIt() throws Exception { + ClassFieldInspector ext = new ClassFieldInspector( Person.class ); + assertEquals(3, ext.getPropertyGetters().size()); + assertEquals("getAge", ((Method) ext.getPropertyGetters().get(0)).getName()); + assertEquals("isHappy", ((Method) ext.getPropertyGetters().get(1)).getName()); + assertEquals("getName", ((Method) ext.getPropertyGetters().get(2)).getName()); + } + + static class Person { + private boolean happy; + private String name; + private int age; + public int getAge() { + return age; + } + public void setAge(int age) { + this.age = age; + } + public boolean isHappy() { + return happy; + } + public void setHappy(boolean happy) { + this.happy = happy; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + private boolean isBogus() { + return false; + } + + //this will not show up as it is a getter that takes an argument + public String getAlsoBad(String s) { + return "ignored"; + } + + + + } + +} Property changes on: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/FieldAccessorGeneratorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/FieldAccessorGeneratorTest.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/FieldAccessorGeneratorTest.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,38 @@ +package org.drools.util.asm; + +import junit.framework.TestCase; + + +public class FieldAccessorGeneratorTest extends TestCase { + + public void testBasic() throws Exception { + FieldAccessorGenerator gen = new FieldAccessorGenerator(); + FieldAccessor ac = gen.newInstanceFor(TestObject.class); + assertNotNull(ac); + + TestObject obj = new TestObject(); + obj.setHappy(true); + obj.setPersonName("michael"); + obj.setPersonAge(31); + + assertEquals(true, ((Boolean)ac.getFieldByIndex(obj, 0)).booleanValue()); + assertEquals(31, ((Integer)ac.getFieldByIndex(obj, 1)).intValue()); + assertEquals("michael", ac.getFieldByIndex(obj, 2)); + + } + + public void testAnother() throws Exception { + FieldAccessorGenerator gen = new FieldAccessorGenerator(); + FieldAccessor ac = gen.getInstanceFor(TestBean.class); + TestBean obj = new TestBean(); + obj.setBlah(false); + obj.setSomething("no"); + assertEquals(false, ((Boolean)ac.getFieldByIndex(obj, 0)).booleanValue()); + + + //check its being cached + FieldAccessor ac2 = gen.getInstanceFor(TestBean.class); + assertEquals(ac, ac2); + } + +} Property changes on: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/FieldAccessorGeneratorTest.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestBean.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestBean.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestBean.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,29 @@ +package org.drools.util.asm; + +public class TestBean { + + private String something; + private int number; + private boolean blah; + public boolean isBlah() { + return blah; + } + public void setBlah(boolean blah) { + this.blah = blah; + } + public int getNumber() { + return number; + } + public void setNumber(int number) { + this.number = number; + } + public String getSomething() { + return something; + } + public void setSomething(String something) { + this.something = something; + } + + + +} Property changes on: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestBean.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestObject.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestObject.java 2006-02-07 01:55:18 UTC (rev 2287) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestObject.java 2006-02-07 09:17:21 UTC (rev 2288) @@ -0,0 +1,60 @@ +package org.drools.util.asm; + +import java.math.BigDecimal; + +public class TestObject { + + private String personName; + private int personAge; + private BigDecimal personWeight; + private boolean happy; + private long someLong; + private char someChar; + private short someShort; + + + + public boolean isHappy() { + return happy; + } + public void setHappy(boolean happy) { + this.happy = happy; + } + public int getPersonAge() { + return personAge; + } + public void setPersonAge(int personAge) { + this.personAge = personAge; + } + public String getPersonName() { + return personName; + } + public void setPersonName(String personName) { + this.personName = personName; + } + public BigDecimal getPersonWeight() { + return personWeight; + } + public void setPersonWeight(BigDecimal personWeight) { + this.personWeight = personWeight; + } + public char getSomeChar() { + return someChar; + } + public void setSomeChar(char someChar) { + this.someChar = someChar; + } + public long getSomeLong() { + return someLong; + } + public void setSomeLong(long someLong) { + this.someLong = someLong; + } + public short getSomeShort() { + return someShort; + } + public void setSomeShort(short someShort) { + this.someShort = someShort; + } + +} Property changes on: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/asm/TestObject.java ___________________________________________________________________ Name: svn:eol-style + native |
From: <jbo...@li...> - 2006-02-07 01:55:32
|
Author: mar...@jb... Date: 2006-02-06 20:55:18 -0500 (Mon, 06 Feb 2006) New Revision: 2287 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Agenda.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ScheduledAgendaItem.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/TestNode.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TestNodeTest.java Log: -Updated more unit tests to work Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Agenda.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Agenda.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Agenda.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -54,10 +54,9 @@ /** Working memory of this Agenda. */ private final WorkingMemoryImpl workingMemory; - - private ScheduledAgendaItem firstScheduledTask; - private ScheduledAgendaItem lastScheduledTask; + private org.drools.util.LinkedList scheduledActivations; + /** Items time-delayed. */ private final Map agendaGroups; @@ -106,13 +105,11 @@ } } - // Cancel all scheduled items and fire a Cancelled event for each Activation - for ( ScheduledAgendaItem item = this.firstScheduledTask ; item.getNext() != null; ) { - item = item.getNext(); - item.remove( ); - this.workingMemory.getAgendaEventSupport().fireActivationCancelled( item ); + for (ScheduledAgendaItem item = (ScheduledAgendaItem) this.scheduledActivations.removeFirst();item != null ; item = (ScheduledAgendaItem) this.scheduledActivations.removeFirst()) { + item.remove(); + this.workingMemory.getAgendaEventSupport().fireActivationCancelled( item ); } - } + } /** * Schedule an agenda item for delayed firing. @@ -120,39 +117,26 @@ * @param item * The item to schedule. */ - TimerTask scheduleItem(ScheduledAgendaItem item) { + void scheduleItem(ScheduledAgendaItem item) { Scheduler.getInstance().scheduleAgendaItem( item ); - if ( this.firstScheduledTask == null ) { - this.firstScheduledTask = item; - this.lastScheduledTask = item; - } else { - this.lastScheduledTask.setNext( item ); - item.setPrevious( this.lastScheduledTask ); - this.lastScheduledTask = item; + if (this.scheduledActivations == null ) { + this.scheduledActivations = new org.drools.util.LinkedList(); } - return item; + this.scheduledActivations.add( item ); } - void removeScheduleItem(ScheduledAgendaItem item) { - if (this.firstScheduledTask != item && this.lastScheduledTask != item) { - item.getPrevious().setNext( item.getNext() ); - item.getNext().setPrevious( item.getPrevious() ); - } else { - if ( this.firstScheduledTask == item ) { - this.firstScheduledTask = item.getNext(); - item.setPrevious( null ); - } - - if ( this.lastScheduledTask == item ) { - this.lastScheduledTask= item.getPrevious(); - item.setNext( null ); - } - } + void removeScheduleItem(ScheduledAgendaItem item) { + this.scheduledActivations.remove( item ); item.cancel(); } + + org.drools.util.LinkedList getScheduledItems() { + return this.scheduledActivations; + } + public void addAgendaGroup(AgendaGroup agendaGroup) { this.agendaGroups.put( agendaGroup.getName(), agendaGroup ); Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ScheduledAgendaItem.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ScheduledAgendaItem.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ScheduledAgendaItem.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -1,4 +1,5 @@ package org.drools.reteoo; + /* * Copyright 2005 JBoss Inc * @@ -24,35 +25,37 @@ import org.drools.spi.ConsequenceException; import org.drools.spi.PropagationContext; import org.drools.spi.Tuple; +import org.drools.util.LinkedListNode; /** * Item entry in the <code>Agenda</code>. * * @author <a href="mailto:bo...@en...">bob mcwhirter </a> */ -class ScheduledAgendaItem extends TimerTask +class ScheduledAgendaItem extends TimerTask implements Activation, - Serializable { + Serializable, + LinkedListNode { // ------------------------------------------------------------ // Instance members // ------------------------------------------------------------ - private ScheduledAgendaItem previous; + private LinkedListNode previous; - private ScheduledAgendaItem next; + private LinkedListNode next; /** The tuple. */ private final ReteTuple tuple; /** The rule. */ - private final Rule rule; - + private final Rule rule; + private final WorkingMemoryImpl workingMemory; private final PropagationContext context; - private final long activationNumber; + private final long activationNumber; // ------------------------------------------------------------ // Constructors @@ -159,23 +162,23 @@ return this.getKey().hashCode(); } - public ScheduledAgendaItem getNext() { + public LinkedListNode getNext() { return this.next; } - public void setNext(ScheduledAgendaItem next) { + public void setNext(LinkedListNode next) { this.next = next; } - public ScheduledAgendaItem getPrevious() { + public LinkedListNode getPrevious() { return this.previous; } - public void setPrevious(ScheduledAgendaItem previous) { + public void setPrevious(LinkedListNode previous) { this.previous = previous; } public void remove() { - this.workingMemory.getAgenda().removeScheduleItem( this ); - } + this.workingMemory.getAgenda().removeScheduleItem( this ); + } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/TestNode.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/TestNode.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/TestNode.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -64,12 +64,11 @@ */ TestNode(int id, TupleSource tupleSource, - Condition condition, - boolean hasMemory) { + Condition condition ) { super( id ); this.condition = condition; this.tupleSource = tupleSource; - this.hasMemory = hasMemory; + this.hasMemory = true; } /** @@ -109,36 +108,42 @@ public void assertTuple(ReteTuple tuple, PropagationContext context, WorkingMemoryImpl workingMemory) { + + boolean allowed = this.condition.isAllowed( tuple ); - if ( hasMemory() ) { - boolean allowed = this.condition.isAllowed( tuple ); + workingMemory.getReteooNodeEventSupport().propagateReteooNode( this, + tuple, + allowed ); - workingMemory.getReteooNodeEventSupport().propagateReteooNode( this, - tuple, - allowed ); - - if ( allowed ) { - LinkedList memory = (LinkedList) workingMemory.getNodeMemory( this ); - memory.add( tuple ); - propagateAssertTuple( tuple, - context, - workingMemory ); - } - } else { - boolean allowed = this.condition.isAllowed( tuple ); - - workingMemory.getReteooNodeEventSupport().propagateReteooNode( this, - tuple, - allowed ); - - if ( allowed ) { - propagateAssertTuple( tuple, - context, - workingMemory ); - } + if ( allowed ) { + LinkedList memory = (LinkedList) workingMemory.getNodeMemory( this ); + memory.add( tuple ); + + for ( int i = 0, size = getTupleSinks().size(); i < size; i++ ) { + ReteTuple child = new ReteTuple( tuple ); + tuple.addLinkedTuple( child ); + ((TupleSink) getTupleSinks().get( i )).assertTuple( child, + context, + workingMemory ); + } } } + public void retractTuple(ReteTuple tuple, + PropagationContext context, + WorkingMemoryImpl workingMemory) { + LinkedList memory = (LinkedList) workingMemory.getNodeMemory( this ); + + memory.remove( tuple ); + + int i = 0; + for (ReteTuple child = (ReteTuple) tuple.getLinkedTuples().getFirst(); child != null; child = (ReteTuple) child.getNext()) { + ((TupleSink) getTupleSinks().get( i++ )).retractTuple( child, + context, + workingMemory ); + } + } + public void updateNewNode(WorkingMemoryImpl workingMemory, PropagationContext context) { this.attachingNewNode = true; @@ -162,10 +167,6 @@ this.attachingNewNode = false; } - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // java.lang.Object - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * Produce a debug string. * @@ -202,10 +203,4 @@ return new LinkedList(); } - public void retractTuple(ReteTuple tuple, - PropagationContext context, - WorkingMemoryImpl workingMemory) { - // TODO Auto-generated method stub - - } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -85,16 +85,14 @@ if ( this.firstNode != node && this.lastNode != node ) { node.getPrevious().setNext( node.getNext() ); node.getNext().setPrevious( node.getPrevious() ); + this.size--; } else { if ( this.firstNode == node ) { removeFirst(); - } - - if ( this.lastNode == node ) { + } else if ( this.lastNode == node ) { removeLast(); } } - this.size--; } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -16,6 +16,7 @@ import org.drools.spi.ClassObjectType; import org.drools.spi.Extractor; import org.drools.spi.FieldExtractor; +import org.drools.spi.MockConstraint; import org.drools.spi.ObjectType; import org.drools.spi.PredicateExpression; import org.drools.spi.PropagationContext; @@ -31,7 +32,7 @@ NotNode node; RightInputAdapterNode ria; BetaMemory memory; - boolean allowed = true; + MockConstraint constraint = new MockConstraint(); /** * Setup the BetaNode used in each of the tests @@ -43,31 +44,13 @@ PropagationContext.ASSERTION, null, null ); - this.workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); + this.workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); - PredicateExpression evaluator = new PredicateExpression() { - - public boolean evaluate(Tuple tuple, - FactHandle handle, - Declaration declaration, - Declaration[] declarations, - WorkingMemory workingMemory) { - return NotNodeTest.this.allowed; - - } - }; - - PredicateConstraint constraint = new PredicateConstraint( evaluator, - null, - new Declaration[]{} ); - - // string1Declaration is bound to column 3 this.node = new NotNode( 15, new MockTupleSource( 5 ), new MockObjectSource( 8 ), - 1, - new BetaNodeBinder( constraint ) ); + new BetaNodeBinder( this.constraint ) ); this.ria = new RightInputAdapterNode(2, 0, this.node); this.ria.attach(); @@ -88,11 +71,9 @@ Cheese cheddar = new Cheese( "cheddar", 10 ); FactHandleImpl f0 = (FactHandleImpl) workingMemory.assertObject( cheddar ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); + ReteTuple tuple1 = new ReteTuple( f0 ); - assertNull( tuple1.getNotTuple() ); + assertNull( tuple1.getLinkedTuples() ); this.node.assertTuple( tuple1, this.context, @@ -105,7 +86,7 @@ assertLength( 0, this.sink.getRetracted() ); - assertNotNull( tuple1.getNotTuple() ); + assertNotNull( tuple1.getLinkedTuples() ); assertEquals( f0, ((Object[])this.sink.getAsserted().get( 0 ))[0] ); @@ -130,9 +111,7 @@ // assert tuple, will have matches, so no propagation FactHandleImpl f2 = (FactHandleImpl) workingMemory.assertObject( new Cheese( "gouda", 10 ) ); - ReteTuple tuple2 = new ReteTuple( 0, - f2, - this.workingMemory ); + ReteTuple tuple2 = new ReteTuple( f2 ); this.node.assertTuple( tuple2, this.context, this.workingMemory ); @@ -147,9 +126,9 @@ // check memory sizes assertEquals( 2, - iteratorSize( this.memory.leftTupleIterator( context, workingMemory ) ) ); + this.memory.getLeftTupleMemory().size() ); assertEquals( 1, - iteratorSize( this.memory.rightObjectIterator() ) ); + this.memory.getRightFactHandleMemory().size() ); // When this is retracter both tuples should assert this.node.retractObject( f1, context, workingMemory ); @@ -168,17 +147,15 @@ * @throws AssertionException */ public void testNotWithConstraints() throws FactException { - this.allowed = false; + this.constraint.isAllowed = false; // assert tuple Cheese cheddar = new Cheese( "cheddar", 10 ); FactHandleImpl f0 = (FactHandleImpl) workingMemory.assertObject( cheddar ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); + ReteTuple tuple1 = new ReteTuple( f0 ); - assertNull( tuple1.getNotTuple() ); + assertNull( tuple1.getLinkedTuples() ); this.node.assertTuple( tuple1, this.context, @@ -191,7 +168,7 @@ assertLength( 0, this.sink.getRetracted() ); - assertNotNull( tuple1.getNotTuple() ); + assertNotNull( tuple1.getLinkedTuples() ); assertEquals( f0, ((Object[])this.sink.getAsserted().get( 0 ))[0] ); @@ -213,9 +190,7 @@ // assert tuple, will have no matches, so do assert propagation FactHandleImpl f2 = (FactHandleImpl) workingMemory.assertObject( new Cheese( "gouda", 10 ) ); - ReteTuple tuple2 = new ReteTuple( 0, - f2, - this.workingMemory ); + ReteTuple tuple2 = new ReteTuple( f2 ); this.node.assertTuple( tuple2, this.context, this.workingMemory ); @@ -226,14 +201,5 @@ assertLength( 0, this.sink.getRetracted() ); - } - - private int iteratorSize(Iterator it) { - int count = 0; - for (;it.hasNext();) { - it.next(); - ++count; - } - return count; - } + } } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -63,14 +63,15 @@ RuleBase ruleBase = new RuleBaseImpl(); WorkingMemoryImpl workingMemory = (WorkingMemoryImpl) ruleBase.newWorkingMemory(); - final Scheduler scheduler = Scheduler.getInstance(); final Rule rule = new Rule( "test-rule" ); + final TerminalNode node = new TerminalNode(1, new MockTupleSource(2), rule); final List data = new ArrayList(); // add consequence rule.setConsequence( new org.drools.spi.Consequence() { - public void invoke(Activation activation, WorkingMemory workingMemory) { + public void invoke(Activation activation, + WorkingMemory workingMemory) { data.add( "tested" ); } } ); @@ -89,17 +90,12 @@ null, null ); - ReteTuple tuple = new ReteTuple( 0, - new FactHandleImpl( 1 ), - workingMemory ); + ReteTuple tuple = new ReteTuple( new FactHandleImpl( 1 ) ); assertEquals( 0, data.size() ); - Agenda agenda = workingMemory.getAgenda(); - agenda.addToAgenda( tuple, - context, - rule ); + node.assertTuple( tuple, context, (WorkingMemoryImpl) workingMemory ); // sleep for 2 seconds Thread.sleep( 300 ); @@ -114,9 +110,9 @@ final WorkingMemoryImpl workingMemory = (WorkingMemoryImpl) ruleBase.newWorkingMemory(); final Agenda agenda = workingMemory.getAgenda(); - final Scheduler scheduler = Scheduler.getInstance(); final Rule rule = new Rule( "test-rule" ); + final TerminalNode node = new TerminalNode(1, new MockTupleSource(2), rule); final List data = new ArrayList(); /* 1/10th of a second */ @@ -131,20 +127,16 @@ // add consequence rule.setConsequence( new org.drools.spi.Consequence() { - public void invoke(Activation activation, WorkingMemory workingMemory) { + public void invoke(Activation activation, + WorkingMemory workingMemory) { /* on first invoke add another one to the agenda */ if ( data.size() < 3 ) { PropagationContext context2 = new PropagationContextImpl( 0, 0, rule, activation ); - ReteTuple tuple2 = new ReteTuple( 0, - new FactHandleImpl( 2 ), - workingMemory ); - - agenda.addToAgenda( tuple2, - context2, - rule ); + ReteTuple tuple2 = new ReteTuple( new FactHandleImpl( 2 ) ); + node.assertTuple( tuple2, context2, (WorkingMemoryImpl) workingMemory ); } data.add( "tested" ); } @@ -155,27 +147,18 @@ null, null ); - ReteTuple tuple1 = new ReteTuple( 0, - new FactHandleImpl( 1 ), - workingMemory ); + ReteTuple tuple1 = new ReteTuple( new FactHandleImpl( 1 ) ); - agenda.addToAgenda( tuple1, - context1, - rule ); - final AgendaItem item = (AgendaItem) agenda.getScheduledItems().values().toArray()[0]; + node.assertTuple( tuple1, context1, (WorkingMemoryImpl) workingMemory ); assertEquals( 0, data.size() ); - // Schedule is for 1 second - scheduler.scheduleAgendaItem( item, - workingMemory ); - - // sleep for 2 seconds + // sleep for 0.5 seconds Thread.sleep( 500 ); // now check for update - assertEquals( 5, + assertEquals( 4, data.size() ); } @@ -184,11 +167,12 @@ RuleBase ruleBase = new RuleBaseImpl(); final WorkingMemoryImpl workingMemory = (WorkingMemoryImpl) ruleBase.newWorkingMemory(); - final Agenda agenda = workingMemory.getAgenda(); - final Scheduler scheduler = Scheduler.getInstance(); + final Agenda agenda = workingMemory.getAgenda(); final Rule rule = new Rule( "test-rule" ); final List data = new ArrayList(); + + final TerminalNode node = new TerminalNode(1, new MockTupleSource(2), rule); /* 1/10th of a second */ Duration duration = new Duration() { @@ -203,20 +187,16 @@ // add consequence rule.setConsequence( new org.drools.spi.Consequence() { - public void invoke(Activation activation, WorkingMemory workingMemory) { + public void invoke(Activation activation, + WorkingMemory workingMemory) { /* on first invoke add another one to the agenda */ if ( data.size() < 5 ) { PropagationContext context2 = new PropagationContextImpl( 0, 0, rule, activation ); - ReteTuple tuple2 = new ReteTuple( 0, - new FactHandleImpl( 2 ), - workingMemory ); - - agenda.addToAgenda( tuple2, - context2, - rule ); + ReteTuple tuple2 = new ReteTuple( new FactHandleImpl( 2 ) ); + node.assertTuple( tuple2, context2, (WorkingMemoryImpl) workingMemory ); } data.add( "tested" ); } @@ -227,91 +207,81 @@ null, null ); - ReteTuple tuple1 = new ReteTuple( 0, - new FactHandleImpl( 1 ), - workingMemory ); - - agenda.addToAgenda( tuple1, - context1, - rule ); - final AgendaItem item = (AgendaItem) agenda.getScheduledItems().values().toArray()[0]; - + ReteTuple tuple1 = new ReteTuple( new FactHandleImpl( 1 ) ); + node.assertTuple( tuple1, context1, (WorkingMemoryImpl) workingMemory ); assertEquals( 0, data.size() ); - // Schedule is for 1 second - scheduler.scheduleAgendaItem( item, - workingMemory ); - - // sleep for 2 seconds + // sleep for 0.5 seconds Thread.sleep( 500 ); // now check for update - assertEquals( 2, + assertEquals( 1, data.size() ); } - - public void testExceptionHandler() throws Exception { - RuleBase ruleBase = new RuleBaseImpl(); - - WorkingMemoryImpl workingMemory = (WorkingMemoryImpl) ruleBase.newWorkingMemory(); - Agenda agenda = workingMemory.getAgenda(); - final Scheduler scheduler = Scheduler.getInstance(); - - final Rule rule = new Rule( "test-rule" ); - - // add consequence - rule.setConsequence( new org.drools.spi.Consequence() { - public void invoke(Activation activation, WorkingMemory workingMemory) throws ConsequenceException { - throw new ConsequenceException( "not enough cheese", - rule ); - } - } ); - - /* 1/10th of a second */ - Duration duration = new Duration() { - public long getDuration(Tuple tuple) { - return 100; - } - - }; - rule.setDuration( duration ); - - final List data = new ArrayList(); - - PropagationContext context = new PropagationContextImpl( 0, - PropagationContext.ASSERTION, - null, - null ); - - ReteTuple tuple = new ReteTuple( 0, - new FactHandleImpl( 1 ), - workingMemory ); - - assertEquals( 0, - data.size() ); - - AsyncExceptionHandler handler = new AsyncExceptionHandler() { - public void handleException(WorkingMemory workingMemory, - ConsequenceException exception) { - data.add( "tested" ); - } - }; - workingMemory.setAsyncExceptionHandler( handler ); - - assertLength( 0, - data ); - - agenda.addToAgenda( tuple, - context, - rule ); - - // sleep for 2 seconds - Thread.sleep( 300 ); - - // now check for update - assertLength( 1, - data ); - } +// +// public void testExceptionHandler() throws Exception { +// RuleBase ruleBase = new RuleBaseImpl(); +// +// WorkingMemoryImpl workingMemory = (WorkingMemoryImpl) ruleBase.newWorkingMemory(); +// Agenda agenda = workingMemory.getAgenda(); +// final Scheduler scheduler = Scheduler.getInstance(); +// +// final Rule rule = new Rule( "test-rule" ); +// +// // add consequence +// rule.setConsequence( new org.drools.spi.Consequence() { +// public void invoke(Activation activation, +// WorkingMemory workingMemory) throws ConsequenceException { +// throw new ConsequenceException( "not enough cheese", +// rule ); +// } +// } ); +// +// /* 1/10th of a second */ +// Duration duration = new Duration() { +// public long getDuration(Tuple tuple) { +// return 100; +// } +// +// }; +// rule.setDuration( duration ); +// +// final List data = new ArrayList(); +// +// PropagationContext context = new PropagationContextImpl( 0, +// PropagationContext.ASSERTION, +// null, +// null ); +// +// ReteTuple tuple = new ReteTuple( 0, +// new FactHandleImpl( 1 ), +// workingMemory ); +// +// assertEquals( 0, +// data.size() ); +// +// AsyncExceptionHandler handler = new AsyncExceptionHandler() { +// public void handleException(WorkingMemory workingMemory, +// ConsequenceException exception) { +// data.add( "tested" ); +// } +// }; +// workingMemory.setAsyncExceptionHandler( handler ); +// +// assertLength( 0, +// data ); +// +// agenda.addToAgenda( tuple, +// context, +// rule ); +// +// // sleep for 2 seconds +// Thread.sleep( 300 ); +// +// // now check for update +// assertLength( 1, +// data ); +// } } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TestNodeTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TestNodeTest.java 2006-02-06 23:39:21 UTC (rev 2286) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TestNodeTest.java 2006-02-07 01:55:18 UTC (rev 2287) @@ -47,11 +47,11 @@ import org.drools.DroolsTestCase; import org.drools.FactException; -import org.drools.reteoo.TestNode.TestNodeMemory; import org.drools.rule.Rule; import org.drools.spi.MockCondition; import org.drools.spi.PropagationContext; import org.drools.spi.TestException; +import org.drools.util.LinkedList; public class TestNodeTest extends DroolsTestCase { private PropagationContext context; @@ -76,8 +76,7 @@ TestNode node = new TestNode( 18, source, new MockCondition( null, - true ), - false ); + true ) ); assertEquals( 18, node.getId() ); @@ -102,56 +101,15 @@ TestNode node = new TestNode( 18, source, new MockCondition( null, - true ), - false ); + true ) ); - TestNodeMemory memory = (TestNodeMemory) workingMemory.getNodeMemory( node ); + LinkedList memory = (LinkedList) workingMemory.getNodeMemory( node ); assertNotNull( memory ); } /** * If a condition allows an incoming Object, then the Object MUST be - * propagated. - * - * @throws FactException - */ - public void testAllowedWithoutMemory() throws FactException { - - /* Create a test node that always returns true */ - TestNode node = new TestNode( 1, - new MockTupleSource( 15 ), - new MockCondition( null, - true ), - false ); - - MockTupleSink sink = new MockTupleSink(); - node.addTupleSink( sink ); - - /* Create the Tuple */ - FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple = new ReteTuple( 0, - f0, - this.workingMemory ); - - /* Tuple should pass and propagate */ - node.assertTuple( tuple, - this.context, - this.workingMemory ); - - /* Check it propagated */ - List asserted = sink.getAsserted(); - assertEquals( 1, - asserted.size() ); - - /* Check propagated item is correct */ - Object[] list = (Object[]) asserted.get( 0 ); - assertSame( tuple, - list[0] ); - } - - /** - * If a condition allows an incoming Object, then the Object MUST be * propagated. This tests that the memory is updated * * @throws FactException @@ -162,17 +120,14 @@ TestNode node = new TestNode( 1, new MockTupleSource( 15 ), new MockCondition( null, - true ), - true ); + true ) ); MockTupleSink sink = new MockTupleSink(); node.addTupleSink( sink ); // Create the Tuple FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple = new ReteTuple( 0, - f0, - this.workingMemory ); + ReteTuple tuple = new ReteTuple( f0 ); // Tuple should pass and propagate node.assertTuple( tuple, @@ -180,19 +135,19 @@ this.workingMemory ); // Check memory was populated - TestNodeMemory memory = (TestNodeMemory) this.workingMemory.getNodeMemory( node ); + LinkedList memory = (LinkedList) this.workingMemory.getNodeMemory( node ); assertEquals( 1, - iteratorSize( memory.iterator( context, workingMemory ) ) ); + memory.size() ); assertEquals( tuple, - memory.iterator( context, workingMemory ).next() ); + memory.getFirst() ); // Now test that the fact is retracted correctly - tuple.remove( context, workingMemory ); + node.retractTuple( tuple, context, workingMemory ); // Now test that the fact is retracted correctly assertEquals( 0, - iteratorSize( memory.iterator( context, workingMemory ) ) ); + memory.size() ); } /** @@ -206,17 +161,14 @@ TestNode node = new TestNode( 1, new MockTupleSource( 15 ), new MockCondition( null, - false ), - false ); + false ) ); MockTupleSink sink = new MockTupleSink(); node.addTupleSink( sink ); /* Create the Tuple */ FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple = new ReteTuple( 0, - f0, - this.workingMemory ); + ReteTuple tuple = new ReteTuple( f0 ); /* Tuple should pass and propagate */ node.assertTuple( tuple, @@ -239,17 +191,14 @@ /* Create the TestNode */ TestNode node = new TestNode( 1, new MockTupleSource( 15 ), - condition, - false ); + condition ); MockTupleSink sink = new MockTupleSink(); node.addTupleSink( sink ); /* Create the Tuple */ FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple = new ReteTuple( 0, - f0, - this.workingMemory ); + ReteTuple tuple = new ReteTuple( f0 ); /* When asserting the node should throw an exception */ try { @@ -262,100 +211,52 @@ } } - public void testUpdateNewNodeWithoutMemory() throws FactException { - // An AlphaNode without memory needs to inform the parent ObjectTypeNode - // to repropagate its memory - WorkingMemoryImpl workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); - Rule rule = new Rule( "test-rule" ); - PropagationContext context = new PropagationContextImpl( 0, - PropagationContext.ASSERTION, - null, - null ); - - // Creat the object source so we can detect the alphaNode telling it to - // propate its contents - MockTupleSource source = new MockTupleSource( 1 ); - - /* Create a test node that always returns true */ - TestNode node = new TestNode( 1, - source, - new MockCondition( null, - true ), - false ); - node.attach(); - - // check that the update propagation requests are 0 - assertEquals( 0, - source.getUdated() ); - - node.updateNewNode( workingMemory, - null ); - - // now they should be 1, we don't need to test actual repropagation as - // thats tested in - // ObjectSourceTest - assertEquals( 1, - source.getUdated() ); - } - - public void testUpdateWithMemory() throws FactException { - // If no child nodes have children then we need to re-process the left - // and right memories - // as a joinnode does not store the resulting tuples - WorkingMemoryImpl workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); - - // Creat the object source so we can detect the alphaNode telling it to - // propate its contents - MockTupleSource source = new MockTupleSource( 1 ); - - /* Create a test node that always returns true */ - TestNode testNode = new TestNode( 1, - source, - new MockCondition( null, - true ), - true ); - - // Add the first tuple sink and assert a tuple and object - // The sink has no memory - MockTupleSink sink1 = new MockTupleSink( 2 ); - testNode.addTupleSink( sink1 ); - - FactHandleImpl f0 = new FactHandleImpl( 0 ); - workingMemory.putObject( f0, - "string0" ); - - ReteTuple tuple1 = new ReteTuple( 0, - f0, - workingMemory ); - - testNode.assertTuple( tuple1, - this.context, - workingMemory ); - - assertLength( 1, - sink1.getAsserted() ); - - // Add the new sink, this should be updated from the re-processed - // joinnode memory - MockTupleSink sink2 = new MockTupleSink( 3 ); - testNode.addTupleSink( sink2 ); - assertLength( 0, - sink2.getAsserted() ); - - testNode.updateNewNode( workingMemory, - this.context ); - - assertLength( 1, - sink2.getAsserted() ); - } - - private int iteratorSize(Iterator it) { - int count = 0; - for (;it.hasNext();) { - it.next(); - ++count; - } - return count; - } +// public void testUpdateWithMemory() throws FactException { +// // If no child nodes have children then we need to re-process the left +// // and right memories +// // as a joinnode does not store the resulting tuples +// WorkingMemoryImpl workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); +// +// // Creat the object source so we can detect the alphaNode telling it to +// // propate its contents +// MockTupleSource source = new MockTupleSource( 1 ); +// +// /* Create a test node that always returns true */ +// TestNode testNode = new TestNode( 1, +// source, +// new MockCondition( null, +// true ) ); +// +// // Add the first tuple sink and assert a tuple and object +// // The sink has no memory +// MockTupleSink sink1 = new MockTupleSink( 2 ); +// testNode.addTupleSink( sink1 ); +// +// FactHandleImpl f0 = new FactHandleImpl( 0 ); +// workingMemory.putObject( f0, +// "string0" ); +// +// ReteTuple tuple1 = new ReteTuple( f0 ); +// +// testNode.assertTuple( tuple1, +// this.context, +// workingMemory ); +// +// assertLength( 1, +// sink1.getAsserted() ); +// +// // Add the new sink, this should be updated from the re-processed +// // joinnode memory +// MockTupleSink sink2 = new MockTupleSink( 3 ); +// testNode.addTupleSink( sink2 ); +// assertLength( 0, +// sink2.getAsserted() ); +// +// testNode.updateNewNode( workingMemory, +// this.context ); +// +// assertLength( 1, +// sink2.getAsserted() ); +// } } |
Author: szimano Date: 2006-02-06 18:39:21 -0500 (Mon, 06 Feb 2006) New Revision: 2286 Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileDirectory.java trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileHistory.java trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileNode.java trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileTools.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/CopyMoveTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/LogMessageTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java Log: testing testing... http://jira.jboss.com/jira/browse/JBSHOTOKU-53 Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -516,7 +516,7 @@ prefix = ""; else prefix = Tools.normalizeSlashes(prefix); - + Pair<Constructor, Configuration> cmData = contentManagers.get(id); if (cmData == null) Modified: trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileContentManager.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileContentManager.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -130,11 +130,11 @@ } public String getPathToRepoCurrent() { - return pathToRepoCurrent + "/" + prefix; + return pathToRepoCurrent + prefix; } public String getPathToRepoHistory() { - return pathToRepoHistory + "/" + prefix; + return pathToRepoHistory + prefix; } public String getPrefix() { Modified: trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileDirectory.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileDirectory.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -22,6 +22,8 @@ package org.jboss.shotoku.files; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -58,6 +60,8 @@ private boolean dirChanged = false; + private String logMessage; + private Logger log = Logger.getLogger(this.getClass()); /** @@ -95,6 +99,8 @@ if (this.directory.exists() && !this.directory.isDirectory()) { throw new RepositoryException(directory + " is not a directory"); } + + refreshLog(); } public String getDirFullPath() { @@ -147,8 +153,6 @@ File file = new File(this.directory.getAbsolutePath() + "/" + name); - log.info(file.getAbsoluteFile()); - if (!file.exists()) { throw new ResourceDoesNotExist("File " + file.getAbsolutePath() + " doesn't exists"); @@ -169,7 +173,7 @@ File dir = new File(this.directory.getAbsolutePath() + "/" + name); if (!dir.exists()) { - throw new RepositoryException("Directory " + dir.getAbsolutePath() + throw new ResourceDoesNotExist("Directory " + dir.getAbsolutePath() + " doesn't exists"); } @@ -203,12 +207,7 @@ if (dir.exists()) { throw new ResourceAlreadyExists("Directory " + dir.getAbsolutePath() + " already exists"); - } else { - if (!dir.mkdirs()) { - throw new RepositoryException("Couldn't create new directory: " - + dir.getAbsolutePath()); - } - } + } return new FileDirectory(this, name, manager); } @@ -280,9 +279,8 @@ node.moveTo(newDir, logMessage); } - // delete this dir history - File hisDir = FileTools.getHistoryDir(this, manager); - hisDir.delete(); + // finally delete this dir + delete(); } catch (Exception e) { throw new MoveException(e); @@ -358,24 +356,89 @@ File propFile = FileTools.getPropertiesFileForDirectory(this, manager); + File logFile = FileTools.getLogFileForDirectory(this, manager, + true); + + Properties props = new Properties(); + + int i = 1; + + // load message props + FileInputStream fis = new FileInputStream(logFile); + props.load(fis); + fis.close(); + + while (props.getProperty(i + ".ver") != null) { + i++; + } + + props.setProperty(i + ".ver", logMessage); + + // save message props + FileOutputStream fos = new FileOutputStream(logFile); + props.store(fos, FileTools.STORE_TEXT); + fos.close(); + OutputStream os = new FileOutputStream(propFile); props.store(os, FileTools.STORE_TEXT); os.close(); + + dirChanged = false; } catch (IOException e) { throw new SaveException(e); } } + this.logMessage = logMessage; + } public String getLogMessage() throws RepositoryException { - return ""; + if (dirChanged) { + return null; + } + else { + refreshLog(); + } + + return logMessage; } + private void refreshLog() { + try { + File logFile = FileTools.getLogFileForDirectory(this, manager, + false); + + if (logFile.exists()) { + Properties props = new Properties(); + + int i = 1; + + // load message props + FileInputStream fis = new FileInputStream(logFile); + props.load(fis); + fis.close(); + + while (props.getProperty(i + ".ver") != null) { + i++; + } + + logMessage = props.getProperty((i-1) + ".ver"); + } else { + logMessage = null; + } + } catch (FileNotFoundException e) { + throw new RepositoryException(e); + } catch (IOException e) { + throw new RepositoryException(e); + } + } + public String getFullName() { - return dirPath; + return directory.getAbsolutePath().replace( + manager.getPathToRepoCurrent() + "/", ""); } public Directory getParent() throws RepositoryException { @@ -385,36 +448,24 @@ public void delete() throws DeleteException, RepositoryException { - File curDir = directory; + FileTools.deleteDirectoryRecurseivly(directory, dirFullPath); - while (directory.exists()) { - File[] files = curDir.listFiles(); + File history = FileTools.getHistoryDir(this, manager, true); - for (int i = 0; i < files.length; i++) { - if (files[i].isFile()) { - if (!files[i].delete()) { - throw new DeleteException("Couldn't delete directory: " - + dirFullPath); - } - } - } - // after deleting all files check if directory can be deleted - if (curDir.listFiles().length == 0) { - File tmp = curDir; - curDir = directory.getParentFile(); - if (!tmp.delete()) { - throw new DeleteException("Couldn't delete directory: " - + dirFullPath); - } - } else { - // if not - delete next directory - curDir = curDir.listFiles()[0]; - } + FileTools.deleteDirectoryRecurseivly(history, dirFullPath); - } + history = FileTools.getHistoryDirForSubdirs(this, manager); + + if (history.exists()) + FileTools.deleteDirectoryRecurseivly(history, dirFullPath); + } public String getName() { + if (directory.getAbsolutePath().equals(manager.getPathToRepoCurrent())) { + return ""; + } + return directory.getName(); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileHistory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileHistory.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileHistory.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -62,16 +62,28 @@ public Node getNodeAtRevision(int revision) throws ResourceDoesNotExist, RepositoryException { + //user gets revision counting from 0 + revision++; + // get copy of this node - Node newNode = node.getDirectory().getNode(node.getName()); + FileNode newNode = (FileNode)node.getDirectory().getNode(node.getName()); + if (newNode.getRevisionNumber() == revision) { + return newNode; + } + else if (revision > newNode.getRevisionNumber()) { + throw new ResourceDoesNotExist("There is no node at revision: "+ (revision - 1)); + } + + newNode.setRevision(revision); + File revFile = FileTools.getFileAtRevision(node, revision, manager); try { // get properties for version Properties props = FileTools.getPropertiesAtRevision(node, manager, revision); - node.setProperties(props); + newNode.setProperties(props); } catch (IOException e1) { throw new RepositoryException(e1); } @@ -87,6 +99,8 @@ newNode.setContent(is); + newNode.setContentChanged(false); + is.close(); } catch (FileNotFoundException e) { throw new RepositoryException(e); Modified: trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileNode.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileNode.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -79,7 +79,7 @@ node = FileTools.normalizeName(node); file = new File(directory + "/" + node); - + this.manager = manager; this.directory = directory; @@ -94,8 +94,6 @@ } if (newFile && file.exists()) { - log.info(file.getAbsolutePath() + " " + file.exists()); - throw new ResourceAlreadyExists(file.getAbsolutePath() + " already exists"); } else if (!newFile && !file.exists()) { @@ -104,10 +102,9 @@ } String suffix; - + if (node.lastIndexOf(".") != -1) { - suffix = node - .substring(node.lastIndexOf("."), node.length()); + suffix = node.substring(node.lastIndexOf("."), node.length()); } else { suffix = ".bin"; } @@ -137,7 +134,7 @@ int chr; while ((chr = is.read()) != -1) { - buffer.append((char)chr); + buffer.append((char) chr); } is.close(); @@ -343,7 +340,7 @@ Node newNode = dir.newNode(file.getName()); if (toFile.exists()) { - throw new MoveException("There is " + file.getName() + throw new MoveException("There is already" + file.getName() + " in directory " + dir); } @@ -354,6 +351,7 @@ if (newHisDir.exists()) { throw new MoveException("History for " + newNode.getFullName() + + " (" + newHisDir.getAbsolutePath() + ")" + " already exists"); } @@ -415,6 +413,7 @@ public void deleteProperty(String propertyName) throws RepositoryException { refreshProps(); props.remove(propertyName); + propsChanged = true; } /** @@ -441,7 +440,8 @@ * directory is already the root directory. */ public Directory getParent() throws RepositoryException { - return new FileDirectory(file.getParent(), file.getParentFile().getName(), manager); + return new FileDirectory(file.getParent(), file.getParentFile() + .getName(), manager); } /** @@ -465,44 +465,77 @@ history.setProperty("ver." + i, logMessage); - // get next history file - File nextVersion = FileTools.getNextHistoryFile(this, manager, i); - File nextPropFile = FileTools.getNextHistoryPropFile(this, manager, i); + if (i != 1) { + // get next history file + File nextVersion = FileTools.getNextHistoryFile(this, manager, i); + File nextPropFile = FileTools.getNextHistoryPropFile(this, manager, + i); - if (nextVersion.exists()) { - throw new SaveException("Conflict in saving: history file exists"); - } + if (nextVersion.exists()) { + throw new SaveException( + "Conflict in saving: history file exists"); + } - try { - nextVersion.createNewFile(); - } catch (IOException e) { - throw new RepositoryException(e); - } + try { + nextVersion.createNewFile(); + } catch (IOException e) { + throw new RepositoryException(e); + } - // save props version - try { - OutputStream hisProps = new FileOutputStream(nextPropFile); + // save props version + try { + OutputStream hisProps = new FileOutputStream(nextPropFile); - // get current props - FileTools.getPropertiesForNode(this, manager).store(hisProps, - FileTools.STORE_TEXT); + // get current props + FileTools.getPropertiesForNode(this, manager).store(hisProps, + FileTools.STORE_TEXT); - hisProps.close(); - } catch (IOException e) { - throw new RepositoryException(e); + hisProps.close(); + } catch (IOException e) { + throw new RepositoryException(e); + } + + // save prevoius version + try { + FileInputStream lastContent = new FileInputStream(file); + FileOutputStream nextVersionOS = new FileOutputStream( + nextVersion); + + int chr; + + while ((chr = lastContent.read()) != -1) { + nextVersionOS.write(chr); + } + + lastContent.close(); + nextVersionOS.close(); + } catch (FileNotFoundException e3) { + throw new SaveException(e3); + } catch (IOException e3) { + throw new RepositoryException(e3); + } } - // save prevoius version - copyToFile(file.getAbsolutePath()); - // save new version - log.info(file.getAbsolutePath()); FileOutputStream newFileOS = null; + try { + File parent = file.getParentFile(); + + if (!parent.exists()) { + parent.mkdirs(); + } + + if (!file.exists()) { + file.createNewFile(); + } + newFileOS = new FileOutputStream(file); } catch (FileNotFoundException e2) { throw new SaveException(e2); + } catch (IOException e) { + throw new RepositoryException(e); } FileInputStream tmpFileIS = null; @@ -533,7 +566,8 @@ FileOutputStream fos = null; FileOutputStream fosPr = null; try { - fos = new FileOutputStream(FileTools.getHistoryFile(this, manager)); + fos = new FileOutputStream(FileTools.getHistoryFile(this, manager, + true)); fosPr = new FileOutputStream(FileTools.getPropsFile(this, manager)); } catch (FileNotFoundException e) { throw new SaveException(e); @@ -554,6 +588,9 @@ // set bools to false lastVersion = contentChanged = propsChanged = false; + + // set current revision + revision = i; } /** @@ -564,18 +601,14 @@ * @throws RepositoryException */ public String getLogMessage() throws RepositoryException { - + + if (contentChanged) + return null; + Properties history = FileTools.getHistoryForNode(this, manager); - int i = 1; + return history.getProperty("ver." + revision); - while (history.getProperty("ver." + i) != null) { - i++; - } - i--; - - return history.getProperty("ver." + i); - } /** @@ -587,14 +620,17 @@ * @throws RepositoryException */ public void delete() throws DeleteException, RepositoryException { + File history = FileTools.getHistoryDir(this, manager); + + FileTools + .deleteDirectoryRecurseivly(history, history.getAbsolutePath()); + if (file.exists()) { try { if (!file.delete()) { throw new DeleteException("Couldn't delete file " + file.getAbsolutePath()); - } else { - log.info("File deleted"); - } + } } catch (SecurityException e) { throw new RepositoryException(e); } @@ -619,7 +655,7 @@ */ public String getFullName() { return file.getAbsolutePath().replace( - manager.getPathToRepoCurrent() + "/" + manager.getPrefix(), ""); + manager.getPathToRepoCurrent() + "/", ""); } public Directory getDirectory() { @@ -632,5 +668,10 @@ public void setProperties(Properties props) { this.props = props; + propsChanged = true; } + + public void setContentChanged(boolean contentChanged) { + this.contentChanged = contentChanged; + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileTools.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileTools.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-files/src/java/org/jboss/shotoku/files/FileTools.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -30,6 +30,8 @@ import javax.activation.MimetypesFileTypeMap; +import org.apache.log4j.Logger; +import org.jboss.shotoku.exceptions.DeleteException; import org.jboss.shotoku.exceptions.RepositoryException; public class FileTools { @@ -39,6 +41,8 @@ private final static String HIST_PROPS = "history.properties"; private final static String PROPS = "properties.properties"; + + private final static String LOG = "log.properties"; public static final String STORE_TEXT = "Properties saved by Shotoku file-based"; @@ -46,6 +50,8 @@ public static final String PROPERTIES_SUFFIX = ".properties"; + private static Logger log = Logger.getLogger(FileTools.class); + static { mimeTypes = new MimetypesFileTypeMap(FileTools.class .getResourceAsStream("/mime-types.txt")); @@ -58,11 +64,10 @@ public static File getFileAtRevision(FileNode node, int revison, FileContentManager manager) { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); + String directory = node.getDirectory().getFullName(); String pathToHistory = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + (directory.length() > 0 ? "/" : "") + node.getNodeName() + "-his" + "/" + revison + REVISION_SUFFIX; @@ -73,28 +78,27 @@ public static File getHistoryDir(FileNode node, FileContentManager manager) { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); + String directory = node.getDirectory().getFullName(); String pathToHistory = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + ((directory.length() > 0) ? "/" : "") + node.getNodeName() + "-his"; - + File hisFile = new File(pathToHistory); return hisFile; } - public static File getHistoryFile(FileNode node, FileContentManager manager) { + public static File getHistoryFile(FileNode node, FileContentManager manager, boolean create) { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); + String directory = node.getDirectory().getFullName(); String pathToHistory = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + ((directory.length() > 0) ? "/" : "") + node.getNodeName() + "-his"; - createHistoryStructure(pathToHistory); + if (create) + createHistoryStructure(pathToHistory); File hisFile = new File(pathToHistory + "/" + HIST_PROPS); @@ -103,11 +107,10 @@ public static File getPropsFile(FileNode node, FileContentManager manager) { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); + String directory = node.getDirectory().getFullName(); String pathToProps = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + (directory.length() > 0 ? "/" : "") + node.getNodeName() + "-his"; createHistoryStructure(pathToProps); @@ -120,12 +123,13 @@ public static Properties getHistoryForNode(FileNode node, FileContentManager manager) throws RepositoryException { - File hisFile = getHistoryFile(node, manager); + File hisFile = getHistoryFile(node, manager, false); Properties hisProps = new Properties(); try { - hisProps.load(new FileInputStream(hisFile)); + if (hisFile.exists()) + hisProps.load(new FileInputStream(hisFile)); } catch (FileNotFoundException e) { throw new RepositoryException(e); } catch (IOException e) { @@ -173,16 +177,15 @@ public static File getNextHistoryFile(FileNode node, FileContentManager manager, int version) { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); + String directory = node.getDirectory().getFullName(); String pathToHistory = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + (directory.length() > 0 ? "/" : "") + node.getNodeName() + "-his"; createHistoryStructure(pathToHistory); - File hisFile = new File(pathToHistory + "/" + version + File hisFile = new File(pathToHistory + "/" + (version - 1) + REVISION_SUFFIX); return hisFile; @@ -191,16 +194,15 @@ public static File getNextHistoryPropFile(FileNode node, FileContentManager manager, int version) { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); + String directory = node.getDirectory().getFullName(); String pathToHistory = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + (directory.length() > 0 ? "/" : "") + node.getNodeName() + "-his"; createHistoryStructure(pathToHistory); - File hisFile = new File(pathToHistory + "/" + version + File hisFile = new File(pathToHistory + "/" + (version - 1) + PROPERTIES_SUFFIX); return hisFile; @@ -209,11 +211,10 @@ public static Properties getPropertiesAtRevision(FileNode node, FileContentManager manager, int version) throws IOException { // delete beggining part of path to get only dir inside repo - String directory = node.getDirectory().toString().replace( - manager.getPathToRepoCurrent(), ""); - + String directory = node.getDirectory().getFullName(); + String pathToHistory = manager.getPathToRepoHistory() - + "/" + directory + "/" + + "/" + directory + (directory.length() > 0 ? "/" : "") + node.getNodeName() + "-his"; File hisFile = new File(pathToHistory + "/" + version @@ -231,28 +232,36 @@ return props; } - throw new IOException("Couldn't find history props"); + throw new IOException("Couldn't find history props: "+hisFile.getAbsolutePath()); } public static File getHistoryDir(FileDirectory directory, - FileContentManager manager) { + FileContentManager manager, boolean create) { File historyDir = new File(manager.getPathToRepoHistory() + "/" + directory.getFullName() + "-his"); - if (!historyDir.exists()) { + if (create && !historyDir.exists()) { historyDir.mkdirs(); } return historyDir; } + + public static File getHistoryDirForSubdirs(FileDirectory directory, + FileContentManager manager) { + File historyDir = new File(manager.getPathToRepoHistory() + + "/" + directory.getFullName()); + return historyDir; + } + public static File getPropertiesFileForDirectory(FileDirectory directory, FileContentManager manager) throws IOException { File propsFile = new File(manager.getPathToRepoHistory() + "/" + directory.getFullName() + "-his" + "/" + PROPS); if (!propsFile.exists()) { - getHistoryDir(directory, manager); + getHistoryDir(directory, manager, true); propsFile.createNewFile(); } @@ -285,4 +294,47 @@ return name; } + + public static void deleteDirectoryRecurseivly(File directory, String dirFullPath) throws DeleteException { + File curDir = directory; + + while (directory.exists()) { + File[] files = curDir.listFiles(); + + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + if (!files[i].delete()) { + throw new DeleteException("Couldn't delete directory: " + + dirFullPath); + } + } + } + // after deleting all files check if directory can be deleted + if (curDir.listFiles().length == 0) { + File tmp = curDir; + curDir = directory.getParentFile(); + if (!tmp.delete()) { + throw new DeleteException("Couldn't delete directory: " + + dirFullPath); + } + } else { + // if not - delete next directory + curDir = curDir.listFiles()[0]; + } + + } + + } + + public static File getLogFileForDirectory(FileDirectory directory, FileContentManager manager, boolean create) throws IOException { + File propsFile = new File(manager.getPathToRepoHistory() + + "/" + directory.getFullName() + "-his" + "/" + LOG); + + if (create && !propsFile.exists()) { + getHistoryDir(directory, manager, true); + propsFile.createNewFile(); + } + + return propsFile; + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/CopyMoveTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/CopyMoveTest.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/CopyMoveTest.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -44,6 +44,8 @@ n1.setContent(TEST_CONTENT); cm.save(parent, dir1, dir2, n1, "setup"); + + log.info(""); } public void testNodeCopy() throws Exception { Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/LogMessageTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/LogMessageTest.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/LogMessageTest.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -66,6 +66,12 @@ assertTrue("log2".equals(cm.getRootDirectory().getDirectory(TEST_DIR).getLogMessage())); assertTrue("log2".equals(d.getLogMessage())); + // Save and check if the log is visible in another handler + Directory d2 = cm.getRootDirectory().getDirectory(TEST_DIR); + d2.setProperty("a", "b"); + d2.save("log3"); + assertTrue("log3".equals(d.getLogMessage())); + // Setting content, but not saving - log message should be null. d.setProperty("a", "b"); assertNull(d.getLogMessage()); Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2006-02-06 20:47:35 UTC (rev 2285) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2006-02-06 23:39:21 UTC (rev 2286) @@ -21,6 +21,7 @@ */ package org.jboss.shotoku.test; +import org.apache.log4j.Logger; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.aop.Inject; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; @@ -42,6 +43,8 @@ protected static String CM_ID = DEFAULT_CM_ID; protected static String TEST_DIR = DEFAULT_TEST_DIR; + protected Logger log = Logger.getLogger(this.getClass()); + @Inject(id=DEFAULT_CM_ID, prefix=DEFAULT_TEST_DIR) protected ContentManager cm; |
From: <jbo...@li...> - 2006-02-06 20:47:44
|
Author: adamw Date: 2006-02-06 15:47:35 -0500 (Mon, 06 Feb 2006) New Revision: 2285 Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/CategoryURLTag.java branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/PageURLTag.java branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/ProjectURLTag.java branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/WikiURLTag.java branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java Log: http://jira.jboss.com/jira/browse/JBLAB-586 Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -242,6 +242,6 @@ * @return A link to the given portal page. */ public static String createPageLink(String portalName, String projectId, String page) { - return "/portal/" + portalName + "/" + page + "&project=" + projectId; + return "/portal/" + portalName + "/" + page + "?project=" + projectId; } } Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/CategoryURLTag.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/CategoryURLTag.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/CategoryURLTag.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -37,7 +37,8 @@ } public int doStartTag() throws JspException { - return writeURL("/portal/index.html", "ctrl:id", "page."+ - pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME)+".softwaremap&category="+category); + return writeURL("/portal/" + + pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME) + + "softwaremap", "category", category); } } Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/PageURLTag.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/PageURLTag.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/PageURLTag.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -37,8 +37,8 @@ } public int doStartTag() throws JspException { - return writeURL("/portal/index.html", "ctrl:id", "page."+ - pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME)+ - "."+page+"&noproject=true"); + return writeURL("/portal/" + + pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME) + + "/" + page, "noproject", "true"); } } Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/ProjectURLTag.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/ProjectURLTag.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/ProjectURLTag.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -63,9 +63,9 @@ pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME).toString()). getProjectLink(getSelectedProject())); } else { - writeURL("/portal/index.html", "ctrl:id", "page."+ - pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME)+"."+page+"&project="+ - getSelectedProject()); + writeURL("/portal/" + + pageContext.getRequest().getAttribute(ForgeHelper.PORTAL_NAME) + + "/" + page, "project", getSelectedProject()); } return EVAL_BODY_BUFFERED; Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/WikiURLTag.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/WikiURLTag.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/taglib/WikiURLTag.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -27,9 +27,7 @@ import org.jboss.forge.common.projects.ProjectsHelper; public class WikiURLTag extends URLTag { - private final static String WIKI_URL = "window.default.WikiPortletWindow&ctrl:type=action"; - - private String page; + private String page; public String getPage() { return page; @@ -44,8 +42,8 @@ pageContext.getRequest().getAttribute( ProjectsHelper.PROJECT_ID).toString() : page; - return writeURL("/portal/index.html", "ctrl:id", - WIKI_URL+"&page="+ForgeHelper.capitilizeFirstLetter(pageName)+"&project="+ + return writeURL("/portal/default/wiki", + "page", ForgeHelper.capitilizeFirstLetter(pageName)+"&project="+ pageName); } } Modified: branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml 2006-02-06 20:47:35 UTC (rev 2285) @@ -70,11 +70,6 @@ </module> <module> <web> - <web-uri>forge-root-redirect.war</web-uri> - </web> - </module> - <module> - <web> <web-uri>navigation-portlet.war</web-uri> </web> </module> Modified: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -56,8 +56,9 @@ String[] tokens = requestURI.split("[/]"); if ((tokens.length > 2) && (ProjectsHelper.getProjects( - ForgeHelper.LABS_PORTAL).projectExists(tokens[2]))) + ForgeHelper.LABS_PORTAL).projectExists(tokens[2]))) { project = tokens[2]; + } if ("true".equals(noproject)) { // Removing project from session info. Modified: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java 2006-02-06 20:40:23 UTC (rev 2284) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java 2006-02-06 20:47:35 UTC (rev 2285) @@ -49,6 +49,7 @@ String[] tokens = requestURI.split("[/]", 3); if ((tokens.length > 2) && (checkFirstToken(tokens[1]))) { + System.out.println("Redirecting to: " + tokens[2]); httpResponse.sendRedirect("/portal/" + tokens[2]); return; } |
From: <jbo...@li...> - 2006-02-06 20:40:30
|
Author: mar...@jb... Date: 2006-02-06 15:40:23 -0500 (Mon, 06 Feb 2006) New Revision: 2284 Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TupleSourceTest.java Log: -Make TupleSourceTest work Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TupleSourceTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TupleSourceTest.java 2006-02-06 20:23:00 UTC (rev 2283) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/TupleSourceTest.java 2006-02-06 20:40:23 UTC (rev 2284) @@ -47,9 +47,7 @@ assertLength( 0, sink1.getAsserted() ); - ReteTuple tuple1 = new ReteTuple( 0, - new FactHandleImpl( 1 ), - workingMemory ); + ReteTuple tuple1 = new ReteTuple( new FactHandleImpl( 1 ) ); source.propagateAssertTuple( tuple1, context, @@ -66,9 +64,7 @@ assertSame( workingMemory, list[2] ); - ReteTuple tuple2 = new ReteTuple( 0, - new FactHandleImpl( 1 ), - workingMemory ); + ReteTuple tuple2 = new ReteTuple( new FactHandleImpl( 1 ) ); MockTupleSink sink2 = new MockTupleSink(); source.addTupleSink( sink2 ); @@ -130,9 +126,7 @@ // Only the last added TupleSink should receive facts source.attachingNewNode = true; - ReteTuple tuple1 = new ReteTuple( 0, - new FactHandleImpl( 2 ), - workingMemory ); + ReteTuple tuple1 = new ReteTuple( new FactHandleImpl( 2 ) ); source.propagateAssertTuple( tuple1, context, @@ -146,9 +140,7 @@ // Now all sinks should receive values source.attachingNewNode = false; - ReteTuple tuple2 = new ReteTuple( 0, - new FactHandleImpl( 3 ), - workingMemory ); + ReteTuple tuple2 = new ReteTuple( new FactHandleImpl( 3 ) ); source.propagateAssertTuple( tuple2, context, |
From: <jbo...@li...> - 2006-02-06 20:23:05
|
Author: mar...@jb... Date: 2006-02-06 15:23:00 -0500 (Mon, 06 Feb 2006) New Revision: 2283 Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java Log: -update unit tests for LeftInputAdapterNode Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java 2006-02-06 19:05:56 UTC (rev 2282) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java 2006-02-06 20:23:00 UTC (rev 2283) @@ -1,17 +1,19 @@ package org.drools.reteoo; import java.util.List; +import java.util.Map; import org.drools.DroolsTestCase; import org.drools.rule.Rule; import org.drools.spi.PropagationContext; +import org.drools.util.LinkedList; +import org.drools.util.LinkedListNodeWrapper; public class LeftInputAdapterNodeTest extends DroolsTestCase { public void testLeftInputAdapterNode() { MockObjectSource source = new MockObjectSource( 15 ); LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 23, - 0, source ); assertEquals( 23, liaNode.getId() ); @@ -31,7 +33,6 @@ MockObjectSource source = new MockObjectSource( 15 ); LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1, - 0, source ); assertEquals( 1, @@ -62,34 +63,49 @@ WorkingMemoryImpl workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); - MockObjectSource source = new MockObjectSource( 15 ); - LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1, - 0, - source ); + new MockObjectSource( 15 ) ); MockTupleSink sink = new MockTupleSink(); liaNode.addTupleSink( sink ); Object string1 = "cheese"; - FactHandleImpl handle1 = new FactHandleImpl( 1 ); - - workingMemory.putObject( handle1, - string1 ); - - /* assert object */ - liaNode.assertObject( handle1, + + // assert object + FactHandleImpl f0 = (FactHandleImpl) workingMemory.assertObject( string1 ); + liaNode.assertObject( f0, context, workingMemory ); List asserted = sink.getAsserted(); assertLength( 1, asserted ); - - /* check tuple comes out */ - ReteTuple tuple = (ReteTuple) ((Object[]) asserted.get( 0 ))[0]; + ReteTuple tuple0 = (ReteTuple) ((Object[]) asserted.get( 0 ))[0]; assertSame( string1, - workingMemory.getObject( tuple.get( 0 ) ) ); + workingMemory.getObject( tuple0.get( 0 ) ) ); + + // check node memory + Map map = (Map) workingMemory.getNodeMemory( liaNode ); + LinkedList list0 = (LinkedList) (LinkedList)map.get( f0 ); + assertEquals( 1, list0.size() ); + assertSame( tuple0, ((LinkedListNodeWrapper)list0.getFirst()).getNode() ); + + // check memory stacks correctly + FactHandleImpl f1 = (FactHandleImpl) workingMemory.assertObject( "test1" ); + liaNode.assertObject( f1, + context, + workingMemory ); + + assertLength( 2, + asserted ); + ReteTuple tuple1 = (ReteTuple) ((Object[]) asserted.get( 1 ))[0]; + + LinkedList list1 = (LinkedList) (LinkedList)map.get( f1 ); + assertEquals( 1, list1.size() ); + assertSame( tuple1, ((LinkedListNodeWrapper)list1.getFirst()).getNode() ); + + assertNotSame( tuple0, tuple1 ); + } /** @@ -109,39 +125,26 @@ MockObjectSource source = new MockObjectSource( 15 ); LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1, - 0, source ); MockTupleSink sink = new MockTupleSink(); liaNode.addTupleSink( sink ); - Object string1 = "cheese"; + FactHandleImpl f0 = (FactHandleImpl) workingMemory.assertObject( "f1" ); - FactHandleImpl handle1 = new FactHandleImpl( 1 ); - - workingMemory.putObject( handle1, - string1 ); - /* assert object */ - liaNode.assertObject( handle1, + liaNode.assertObject( f0, context, workingMemory ); ReteTuple tuple = (ReteTuple) ((Object[]) sink.getAsserted().get( 0 ))[0]; + + liaNode.retractObject( f0, context, workingMemory ); + + Map map = (Map) workingMemory.getNodeMemory( liaNode ); + assertNull( map.get( f0 ) ); - ReteTuple previous = new ReteTuple(0, handle1, workingMemory); - ReteTuple next = new ReteTuple(0, handle1, workingMemory); + assertSame( tuple, (ReteTuple) ((Object[]) sink.getRetracted().get( 0 ))[0] ); - tuple.setPrevious( previous ); - tuple.setNext( next ); - - tuple.remove( context, workingMemory ); - - assertSame(previous.getNext(), next); - assertSame(next.getPrevious(), previous); - - assertNull(tuple.getPrevious()); - assertNull(tuple.getNext()); - } } |
From: <jbo...@li...> - 2006-02-06 18:08:38
|
Author: adamw Date: 2006-02-06 13:08:23 -0500 (Mon, 06 Feb 2006) New Revision: 2281 Added: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml Removed: branches/forge/adam/portal-extensions-2.2/forge-root-redirect/ Modified: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java branches/forge/adam/portal-extensions-2.2/forge-login/maven.xml branches/forge/adam/portal-extensions-2.2/forge-portal-attr/project.xml branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml branches/forge/adam/portal-extensions-2.2/maven.xml branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml Log: http://jira.jboss.com/jira/browse/JBLAB-586 Modified: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java 2006-02-06 18:08:23 UTC (rev 2281) @@ -66,7 +66,7 @@ final static String UNCONFIRMED_XML = "unconfirmed.xml"; static String getBaseFilePath() { - return ConTools.getRequestProperty("org.jboss.portal.property.name") + return ConTools.getRequestProperty(ForgeHelper.PROP_SHOTOKU_MAIN_DIRECTORY) + "/" + ConServer.CONTRIBUTOR_DIR ; } Modified: branches/forge/adam/portal-extensions-2.2/forge-login/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-login/maven.xml 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/forge-login/maven.xml 2006-02-06 18:08:23 UTC (rev 2281) @@ -22,9 +22,9 @@ <ant:filename name="target/*.jar" /> </ant:fileset> </ant:copy> - <ant:copy + <!--<ant:copy todir="${local.deploy.dir}/jboss-portal.sar/conf" - file="to-copy/login-config.xml" overwrite="true" /> + file="to-copy/login-config.xml" overwrite="true" />--> <ant:copy todir="${local.deploy.dir}" file="to-copy/portal-login-ds.xml" overwrite="true" /> Modified: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/project.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/project.xml 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/project.xml 2006-02-06 18:08:23 UTC (rev 2281) @@ -15,13 +15,12 @@ </organization> <description></description> - <dependencies> - - <dependency> - <groupId>jboss-forge</groupId> - <artifactId>forge-common</artifactId> - <version>1.0</version> - </dependency> + <dependencies> + <dependency> + <groupId>jboss-forge</groupId> + <artifactId>forge-common</artifactId> + <version>1.0</version> + </dependency> <dependency> <groupId>aslibs</groupId> @@ -38,14 +37,12 @@ </dependency> <dependency> - <groupId>jboss</groupId> - <artifactId>jboss-common</artifactId> - <version>1.0</version> - <jar>jboss-common.jar</jar> - </dependency> + <groupId>jboss</groupId> + <artifactId>jboss-common</artifactId> + <version>1.0</version> + <jar>jboss-common.jar</jar> + </dependency> </dependencies> - - <build> <sourceDirectory>src/java</sourceDirectory> Added: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/src/java/org/jboss/forge/portal/ProjectRedirectFilter.java 2006-02-06 18:08:23 UTC (rev 2281) @@ -0,0 +1,62 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.forge.portal; + +import java.io.IOException; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author adamw + */ +public class ProjectRedirectFilter implements Filter { + public void init(FilterConfig conf) { + } + + private boolean checkFirstToken(String token) { + return "projects".equals(token) || "products".equals(token); + } + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + if ((request instanceof HttpServletRequest) + && (response instanceof HttpServletResponse)) { + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpServletResponse httpResponse = (HttpServletResponse) response; + + String requestURI = httpRequest.getRequestURI(); + String[] tokens = requestURI.split("[/]", 3); + + if ((tokens.length > 2) && (checkFirstToken(tokens[1]))) { + httpResponse.sendRedirect("/portal/" + tokens[2]); + return; + } + } + + chain.doFilter(request, response); + } + + public void destroy() { + } +} Added: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml 2006-02-06 18:08:23 UTC (rev 2281) @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<jboss-web> + <security-domain>java:jaas/portal</security-domain> + <context-root /> + <replication-config> + <replication-trigger>SET_AND_GET</replication-trigger> + <replication-type>SYNC</replication-type> + </replication-config> + <resource-ref> + <res-ref-name>jdbc/PortalDS</res-ref-name> + <jndi-name>java:PortalDS</jndi-name> + </resource-ref> +</jboss-web> Modified: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml 2006-02-06 18:08:23 UTC (rev 2281) @@ -28,8 +28,24 @@ <filter-name>SSLProcessor</filter-name> <servlet-name>PortalServletWithDefaultServletMapping</servlet-name> </filter-mapping> + + <!-- Project/ product filter --> + <filter> + <filter-name>ProjectsProductsFilter</filter-name> + <filter-class>org.jboss.forge.portal.ProjectRedirectFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>ProjectsProductsFilter</filter-name> + <servlet-name>PortalServletWithPathMapping</servlet-name> + </filter-mapping> + + <filter-mapping> + <filter-name>ProjectsProductsFilter</filter-name> + <servlet-name>PortalServletWithDefaultServletMapping</servlet-name> + </filter-mapping> - <!-- Forge filter --> + <!-- Attributes filter --> <filter> <filter-name>AttributesFilter</filter-name> <filter-class>org.jboss.forge.portal.AttributesFilter</filter-class> Modified: branches/forge/adam/portal-extensions-2.2/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/maven.xml 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/maven.xml 2006-02-06 18:08:23 UTC (rev 2281) @@ -156,6 +156,7 @@ <ant:copy todir="${local.server.dir}" overwrite="true"> <ant:fileset dir="jboss-as-binaries/to-copy" /> </ant:copy> + <ant:delete dir="${local.deploy.dir}/jbossweb-tomcat55.sar/ROOT.war" /> <ant:copy todir="${local.deploy.dir}" overwrite="true"> <ant:fileset dir="portal-binaries/to-copy" /> Modified: branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml 2006-02-06 17:22:03 UTC (rev 2280) +++ branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml 2006-02-06 18:08:23 UTC (rev 2281) @@ -2,41 +2,31 @@ <deployments> <deployment> <parent-ref /> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <portal> <portal-name>default</portal-name> <properties> - <!-- - | Set the layout for the default portal, see also portal-layouts.xml. - --> + <!-- Set the layout for the default portal, see also portal-layouts.xml. --> <property> <name>layout.id</name> <value>generic</value> </property> - <!-- - | Set the theme for the default portal, see also portal-themes.xml. - --> + <!-- Set the theme for the default portal, see also portal-themes.xml. --> <property> <name>theme.id</name> <value>Nphalanx</value> </property> - <!-- - | Set the default render set name (used by the render tag in layouts), see also portal-renderSet.xml - --> + <!-- Set the default render set name (used by the render tag in layouts), see also portal-renderSet.xml --> <property> <name>theme.renderSetId</name> <value>divRenderer</value> </property> - <!-- - | Set the default strategy name (used by the strategy interceptor), see also portal-strategies.xml - --> + <!-- Set the default strategy name (used by the strategy interceptor), see also portal-strategies.xml --> <property> <name>layout.strategyId</name> <value>maximizedRegion</value> </property> - <!-- - | The default page name, if the property is not explicited then the default page name is "default" - --> + <!-- The default page name, if the property is not explicited then the default page name is "default" --> <property> <name>portal.defaultObjectName</name> <value>default</value> @@ -96,74 +86,50 @@ <page> <page-name>default</page-name> <window> - <window-name> - FreezonePortletWindowDefaultDefault - </window-name> - <instance-ref> - FreezoneDefaultPagePortletInstance - </instance-ref> + <window-name>FreezonePortletWindowDefaultDefault</window-name> + <instance-ref>FreezoneDefaultPagePortletInstance</instance-ref> <region>center</region> <height>0</height> </window> <window> - <window-name> - PodcastPortletWindowDefaultDefault - </window-name> + <window-name>PodcastPortletWindowDefaultDefault</window-name> <instance-ref>PodcastPortletInstance</instance-ref> <region>center</region> <height>1</height> </window> <window> - <window-name> - PrimatesPortletWindowDefaultDefault - </window-name> + <window-name>PrimatesPortletWindowDefaultDefault</window-name> <instance-ref>PrimatesPortletInstance</instance-ref> <region>center</region> <height>1</height> </window> <window> - <window-name> - BlogPortletWindowDefaultDefault - </window-name> + <window-name>BlogPortletWindowDefaultDefault</window-name> <instance-ref>BlogPortletInstance</instance-ref> <region>center</region> <height>2</height> </window> <window> - <window-name> - NavigationPortletWindowDefaultDefault - </window-name> - <instance-ref> - NavigationPortletInstance - </instance-ref> + <window-name>NavigationPortletWindowDefaultDefault</window-name> + <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> </window> <window> - <window-name> - AdsPortletWindowDefaultDefault - </window-name> + <window-name>AdsPortletWindowDefaultDefault</window-name> <instance-ref>AdsPortletInstance</instance-ref> <region>left</region> <height>2</height> </window> <window> - <window-name> - PollsPortletWindowDefaultRandom - </window-name> - <instance-ref> - PollsPortletInstanceRandom - </instance-ref> + <window-name>PollsPortletWindowDefaultRandom</window-name> + <instance-ref>PollsPortletInstanceRandom</instance-ref> <region>right</region> <height>0</height> </window> <window> - <window-name> - FreezonePortletWindowDefaultRight - </window-name> - <instance-ref> - FreezoneRightPanelPortletInstance - </instance-ref> + <window-name>FreezonePortletWindowDefaultRight</window-name> + <instance-ref>FreezoneRightPanelPortletInstance</instance-ref> <region>right</region> <height>1</height> </window> @@ -171,7 +137,7 @@ </portal> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <!-- login page --> @@ -183,9 +149,7 @@ <height>0</height> </window> <window> - <window-name> - NavigationPortletWindowDefaultLogin - </window-name> + <window-name>NavigationPortletWindowDefaultLogin</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -199,7 +163,7 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <!-- timetracker page --> <page> @@ -211,9 +175,7 @@ <height>0</height> </window> <window> - <window-name> - NavigationPortletWindowDefaultTTS - </window-name> + <window-name>NavigationPortletWindowDefaultTTS</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -227,15 +189,13 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>softwaremap</page-name> <window> - <window-name> - NavigationPortletWindowDefaultMap - </window-name> + <window-name>NavigationPortletWindowDefaultMap</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -255,14 +215,12 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>wiki</page-name> <window> - <window-name> - NavigationPortletWindowDefaultWiki - </window-name> + <window-name>NavigationPortletWindowDefaultWiki</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -282,14 +240,12 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>admin</page-name> <window> - <window-name> - NavigationPortletWindowDefaultAdmin - </window-name> + <window-name>NavigationPortletWindowDefaultAdmin</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -307,9 +263,7 @@ <height>0</height> </window> <window> - <window-name> - ManagementPortletWindowDefaultAdmin - </window-name> + <window-name>ManagementPortletWindowDefaultAdmin</window-name> <instance-ref>ManagementPortletInstance</instance-ref> <region>center</region> <height>1</height> @@ -323,15 +277,13 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>info</page-name> <window> - <window-name> - NavigationPortletWindowDefaultInfo - </window-name> + <window-name>NavigationPortletWindowDefaultInfo</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -342,11 +294,8 @@ <region>left</region> <height>2</height> </window> - <window> - <window-name> - PrjInfoPortletWindowDefaultInfo - </window-name> + <window-name>PrjInfoPortletWindowDefaultInfo</window-name> <instance-ref>PrjInfoPortletInstance</instance-ref> <region>center</region> <height>0</height> @@ -360,14 +309,12 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>blog</page-name> <window> - <window-name> - NavigationPortletWindowDefaultBlog - </window-name> + <window-name>NavigationPortletWindowDefaultBlog</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -380,9 +327,7 @@ </window> <window> - <window-name> - PrjBlogPortletWindowDefaultBlog - </window-name> + <window-name>PrjBlogPortletWindowDefaultBlog</window-name> <instance-ref>PrjBlogPortletInstance</instance-ref> <region>center</region> <height>0</height> @@ -390,56 +335,44 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>downloads</page-name> <window> - <window-name> - NavigationPortletWindowDefaultDownloads - </window-name> + <window-name>NavigationPortletWindowDefaultDownloads</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> </window> <window> - <window-name> - AdsPortletWindowDefaultDownloads - </window-name> + <window-name>AdsPortletWindowDefaultDownloads</window-name> <instance-ref>AdsPortletInstance</instance-ref> <region>left</region> <height>2</height> </window> <window> - <window-name> - PrjDownloadsPortletWindowDefaultDownloads - </window-name> + <window-name>PrjDownloadsPortletWindowDefaultDownloads</window-name> <instance-ref>PrjDownloadsPortletInstance</instance-ref> <region>center</region> <height>0</height> </window> <window> - <window-name> - DownloadCounterPortletWindowDefaultDownloads - </window-name> - <instance-ref> - DownloadCounterPortletInstance - </instance-ref> + <window-name>DownloadCounterPortletWindowDefaultDownloads</window-name> + <instance-ref>DownloadCounterPortletInstance</instance-ref> <region>center</region> <height>1</height> </window> </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>con</page-name> <window> - <window-name> - NavigationPortletWindowDefaultCon - </window-name> + <window-name>NavigationPortletWindowDefaultCon</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -459,14 +392,12 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>feeds</page-name> <window> - <window-name> - NavigationPortletWindowDefaultFeeds - </window-name> + <window-name>NavigationPortletWindowDefaultFeeds</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -477,7 +408,6 @@ <region>left</region> <height>2</height> </window> - <window> <window-name>FeedsPortletWindowDefault</window-name> <instance-ref>FeedsPortletInstance</instance-ref> @@ -487,31 +417,24 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>freezone</page-name> <window> - <window-name> - NavigationPortletWindowDefaultFreezone - </window-name> + <window-name>NavigationPortletWindowDefaultFreezone</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> </window> <window> - <window-name> - AdsPortletWindowDefaultFreezone - </window-name> + <window-name>AdsPortletWindowDefaultFreezone</window-name> <instance-ref>AdsPortletInstance</instance-ref> <region>left</region> <height>2</height> </window> - <window> - <window-name> - FreezonePortletWindowDefaultFreezone - </window-name> + <window-name>FreezonePortletWindowDefaultFreezone</window-name> <instance-ref>PrjFreezonePortletInstance</instance-ref> <region>center</region> <height>0</height> @@ -519,7 +442,7 @@ </page> </deployment> <!--<deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>forgeforums</page-name> @@ -546,14 +469,12 @@ </page> </deployment>--> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>status</page-name> <window> - <window-name> - NavigationPortletWindowDefaultStatus - </window-name> + <window-name>NavigationPortletWindowDefaultStatus</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> @@ -565,9 +486,7 @@ <height>2</height> </window> <window> - <window-name> - StatusPortletWindowDefaultStatus - </window-name> + <window-name>StatusPortletWindowDefaultStatus</window-name> <instance-ref>StatusPortletInstance</instance-ref> <region>center</region> <height>0</height> @@ -575,30 +494,24 @@ </page> </deployment> <deployment> - <if-exists>overwrite</if-exists> + <if-exists>keep</if-exists> <parent-ref>default</parent-ref> <page> <page-name>podcast</page-name> <window> - <window-name> - NavigationPortletWindowDefaultPodcast - </window-name> + <window-name>NavigationPortletWindowDefaultPodcast</window-name> <instance-ref>NavigationPortletInstance</instance-ref> <region>left</region> <height>0</height> </window> <window> - <window-name> - AdsPortletWindowDefaultPodcast - </window-name> + <window-name>AdsPortletWindowDefaultPodcast</window-name> <instance-ref>AdsPortletInstance</instance-ref> <region>left</region> <height>2</height> </window> <window> - <window-name> - PodcastPortletWindowDefaultPodcast - </window-name> + <window-name>PodcastPortletWindowDefaultPodcast</window-name> <instance-ref>PodcastPortletInstance</instance-ref> <region>center</region> <height>0</height> |
From: <jbo...@li...> - 2006-02-06 13:39:36
|
Author: rem...@jb... Date: 2006-02-06 08:39:16 -0500 (Mon, 06 Feb 2006) New Revision: 2279 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/AprLifecycleListener.java Log: - Require tcnative 1.1.2 (IPv6 fix). Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/AprLifecycleListener.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/AprLifecycleListener.java 2006-02-06 13:38:44 UTC (rev 2278) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/AprLifecycleListener.java 2006-02-06 13:39:16 UTC (rev 2279) @@ -52,7 +52,7 @@ protected static final int REQUIRED_MAJOR = 1; protected static final int REQUIRED_MINOR = 1; - protected static final int REQUIRED_PATCH = 1; + protected static final int REQUIRED_PATCH = 2; // ---------------------------------------------- LifecycleListener Methods |
From: <jbo...@li...> - 2006-02-06 13:38:49
|
Author: rem...@jb... Date: 2006-02-06 08:38:44 -0500 (Mon, 06 Feb 2006) New Revision: 2278 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/session/StandardSession.java Log: - getId should not throw an ISE. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/session/StandardSession.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/session/StandardSession.java 2006-02-06 13:38:15 UTC (rev 2277) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/session/StandardSession.java 2006-02-06 13:38:44 UTC (rev 2278) @@ -324,11 +324,6 @@ */ public String getId() { - if ( !isValid() ) { - throw new IllegalStateException - (sm.getString("standardSession.getId.ise")); - } - return (this.id); } |
From: <jbo...@li...> - 2006-02-06 13:38:23
|
Author: rem...@jb... Date: 2006-02-06 08:38:15 -0500 (Mon, 06 Feb 2006) New Revision: 2277 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java Log: - Port patch (IPv6 + SSL features). Modified: trunk/labs/jbossweb/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java 2006-02-06 07:49:39 UTC (rev 2276) +++ trunk/labs/jbossweb/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java 2006-02-06 13:38:15 UTC (rev 2277) @@ -528,10 +528,10 @@ } else { addressStr = address.getHostAddress(); } - long inetAddress = Address.info(addressStr, Socket.APR_INET, + long inetAddress = Address.info(addressStr, Socket.APR_UNSPEC, port, 0, rootPool); // Create the APR server socket - serverSock = Socket.create(Socket.APR_INET, Socket.SOCK_STREAM, + serverSock = Socket.create(Socket.APR_UNSPEC, Socket.SOCK_STREAM, Socket.APR_PROTO_TCP, rootPool); if (OS.IS_UNIX) { Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1); @@ -590,10 +590,12 @@ SSLContext.setCipherSuite(sslContext, SSLCipherSuite); // Load Server key and certificate SSLContext.setCertificate(sslContext, SSLCertificateFile, SSLCertificateKeyFile, SSLPassword, SSL.SSL_AIDX_RSA); + // Set certificate chain file + SSLContext.setCertificateChainFile(sslContext, SSLCertificateChainFile, false); // Support Client Certificates - if (SSLCACertificateFile != null) { - SSLContext.setCACertificate(sslContext, SSLCACertificateFile, null); - } + SSLContext.setCACertificate(sslContext, SSLCACertificateFile, SSLCACertificatePath); + // Set revocation + SSLContext.setCARevocation(sslContext, SSLCARevocationFile, SSLCARevocationPath); // Client certificate verification value = SSL.SSL_CVERIFY_NONE; if ("optional".equalsIgnoreCase(SSLVerifyClient)) { |
From: <jbo...@li...> - 2006-02-06 07:49:50
|
Author: mic...@jb... Date: 2006-02-06 02:49:39 -0500 (Mon, 06 Feb 2006) New Revision: 2276 Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowUpdater.java Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java Log: shadow can now refresh data Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java 2006-02-06 07:32:52 UTC (rev 2275) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java 2006-02-06 07:49:39 UTC (rev 2276) @@ -29,6 +29,7 @@ //cache the generated classes, and lists of indexable "fields" on each pojo class static Map cache = new HashMap(); + /** In this version, change listening features will be added to the pojo, based on bean properties */ public static Object generateChangeListenerProxy(Object pojo) throws IOException { Class cls = pojo.getClass(); GeneratedEntry holder = getEntryFor(cls); @@ -59,7 +60,7 @@ GeneratedEntry entry = (GeneratedEntry) cache.get(pojoClass); if (entry == null) { entry = new GeneratedEntry(); - entry.instanceFactory = createInstanceFactory(pojoClass, new Class[] {ChangeListener.class}); + entry.instanceFactory = createInstanceFactory(pojoClass, new Class[] {ChangeListener.class, ShadowUpdater.class}); entry.fieldMethods = extractFieldMethodsInOrder(pojoClass); cache.put(pojoClass, entry); } Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowUpdater.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowUpdater.java 2006-02-06 07:32:52 UTC (rev 2275) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowUpdater.java 2006-02-06 07:49:39 UTC (rev 2276) @@ -0,0 +1,14 @@ +package org.drools.util.proxy; + +/** + * Shadow proxies provide this + * so that a field can be updated if a change is detected. + * + * @author Michael Neale + * + */ +public interface ShadowUpdater { + + public void refreshShadowCopies(); + +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowUpdater.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-06 07:32:52 UTC (rev 2275) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-06 07:49:39 UTC (rev 2276) @@ -27,40 +27,44 @@ */ public class ShadowedFactInterceptor extends FactInterceptor { - private final Object[] values; - private final Map fieldToValue; + private Map fieldToValue; private final Object target; + private final Method[] fieldMethods; public ShadowedFactInterceptor(Object target, Method[] fieldMethods) { + this.target = target; + this.fieldMethods = fieldMethods; + refreshShadowCopies(); + } - this.target = target; - + + private void refreshShadowCopies() { fieldToValue = new HashMap(); int numOfFields = fieldMethods.length; - values = new Object[numOfFields]; try { for ( int i = 0; i < numOfFields; i++ ) { //read all the objects into a value array Method method = fieldMethods[i]; Object val = method.invoke( target, null); - values[i] = fieldMethods[i].invoke( target, - null ); fieldToValue.put(method, val); } } catch ( Exception e ) { throw new IllegalStateException( e ); } - } public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { - + + if (method.getDeclaringClass() == ShadowUpdater.class) { + refreshShadowCopies(); + return null; + } //check if method is in targetFields Object val = fieldToValue.get(method); if (val != null) { Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-06 07:32:52 UTC (rev 2275) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-06 07:49:39 UTC (rev 2276) @@ -25,6 +25,9 @@ assertEquals("michael", p.getName()); //ooh clever... assertEquals("jo", original.getName()); + ((ShadowUpdater) p).refreshShadowCopies(); + assertEquals("jo", p.getName()); + } public void testChangeListener() throws IOException { |
Author: mar...@jb... Date: 2006-02-06 02:32:52 -0500 (Mon, 06 Feb 2006) New Revision: 2275 Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/spi/MockConstraint.java Removed: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/visualize/ Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java Log: -make JoinNodeTest work with new Rete changes Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java 2006-02-06 07:14:17 UTC (rev 2274) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java 2006-02-06 07:32:52 UTC (rev 2275) @@ -67,6 +67,14 @@ this.leftMemory = new LinkedList(); this.rightMemory = new LinkedHashMap(); } + + public LinkedList getLeftTupleMemory() { + return this.leftMemory; + } + + public Map getRightFactHandleMemory() { + return this.rightMemory; + } /** Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-02-06 07:14:17 UTC (rev 2274) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-02-06 07:32:52 UTC (rev 2275) @@ -122,61 +122,30 @@ final RuleBaseImpl ruleBase = new RuleBaseImpl( ); ruleBase.addRuleSet( ruleSet ); - -// final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); -// javax.swing.SwingUtilities.invokeLater(new Runnable() { -// public void run() { -// viewer.showGUI(); -// } -// }); WorkingMemory workingMemory = ruleBase.newWorkingMemory(); InputStream is = getClass().getResourceAsStream( "/manners16.dat" ); List list = getInputObjects( is ); for ( Iterator it = list.iterator(); it.hasNext(); ) { Object object = it.next(); - //System.err.println( object ); workingMemory.assertObject( object ); } - - //workingMemory.addEventListener( new DebugWorkingMemoryEventListener() ); - - //workingMemory.addEventListener( new DebugAgendaEventListener() ); - -// workingMemory.addEventListener( new DefaultAgendaEventListener() { -// public void activationCreated(ActivationCreatedEvent event) { -// System.err.println( event ); -// } -// -// public void activationCancelled(ActivationCancelledEvent event) { -// System.err.println( event ); -// } -// -// public void beforeActivationFired(BeforeActivationFiredEvent event) { -// System.err.println( event ); -// } -// } ); - + workingMemory.assertObject( new Count( 1 ) ); -// -// workingMemory.assertObject( new Seating(1,0,true,1,"n11",1,"n11") ); -// workingMemory.assertObject( new Seating(2,1,true,1,"n11",2,"n10") ); -// workingMemory.assertObject( new Path(1,1,"n11") ); -// workingMemory.assertObject( new Path(2,2,"n10") ); -// workingMemory.assertObject( new Path(2,1,"n11") ); -// -// workingMemory.assertObject( new Chosen(1, "n10",Hobby.H2) );; -// -// Context context = new Context( Context.ASSIGN_SEATS ); -// workingMemory.assertObject( context ); long start = System.currentTimeMillis(); workingMemory.fireAllRules(); System.err.println( System.currentTimeMillis() - start ); -// while (true) { -// Thread.sleep( 1000 ); -// } + // final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); + // + // javax.swing.SwingUtilities.invokeLater(new Runnable() { + // public void run() { + // viewer.showGUI(); + // } + // }); + // + // Thread.sleep( 10000 ); System.out.println("Integer evals:" + EvaluatorFactory.getIntEqEvalCount()); } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2006-02-06 07:14:17 UTC (rev 2274) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2006-02-06 07:32:52 UTC (rev 2275) @@ -1,27 +1,13 @@ package org.drools.reteoo; -import java.util.HashSet; -import java.util.Iterator; import java.util.Map; -import java.util.Set; -import org.drools.Cheese; import org.drools.DroolsTestCase; -import org.drools.FactException; -import org.drools.FactHandle; -import org.drools.WorkingMemory; -import org.drools.rule.Declaration; -import org.drools.rule.PredicateConstraint; import org.drools.rule.Rule; import org.drools.spi.BetaNodeBinder; -import org.drools.spi.ClassFieldExtractor; -import org.drools.spi.ClassObjectType; -import org.drools.spi.Extractor; -import org.drools.spi.FieldExtractor; -import org.drools.spi.ObjectType; -import org.drools.spi.PredicateExpression; +import org.drools.spi.FieldConstraint; +import org.drools.spi.MockConstraint; import org.drools.spi.PropagationContext; -import org.drools.spi.Tuple; public class JoinNodeTest extends DroolsTestCase { Rule rule; @@ -32,6 +18,7 @@ MockTupleSink sink; BetaNode node; BetaMemory memory; + MockConstraint constraint = new MockConstraint(); /** * Setup the BetaNode used in each of the tests @@ -51,7 +38,7 @@ this.node = new JoinNode( 15, this.tupleSource, this.objectSource, - 5 ); + new BetaNodeBinder( new FieldConstraint[]{this.constraint} ) ); this.node.addTupleSink( this.sink ); @@ -59,9 +46,9 @@ // check memories are empty assertEquals( 0, - iteratorSize(this.memory.leftTupleIterator( this.context, this.workingMemory )) ); + this.memory.getLeftTupleMemory().size() ); assertEquals( 0, - iteratorSize(this.memory.rightObjectIterator( ) ) ); + this.memory.getRightFactHandleMemory().size() ); } @@ -98,8 +85,7 @@ JoinNode joinNode = new JoinNode( 2, tupleSource, - objectSource, - 1 ); + objectSource ); BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( joinNode ); @@ -113,39 +99,32 @@ */ public void testAssertTuple() throws Exception { FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); + ReteTuple tuple0 = new ReteTuple( f0 ); // assert tuple, should add one to left memory - this.node.assertTuple( tuple1, + this.node.assertTuple( tuple0, this.context, this.workingMemory ); + // check memories are empty assertEquals( 1, - iteratorSize(this.memory.leftTupleIterator( this.context, this.workingMemory )) ); + this.memory.getLeftTupleMemory().size() ); assertEquals( 0, - iteratorSize(this.memory.rightObjectIterator( ) ) ); + this.memory.getRightFactHandleMemory().size() ); - // assert tuple, should add left memory should be 2 FactHandleImpl f1 = new FactHandleImpl( 1 ); - ReteTuple tuple2 = new ReteTuple( 0, - f1, - this.workingMemory ); - this.node.assertTuple( tuple2, + ReteTuple tuple1 = new ReteTuple( f1 ); + this.node.assertTuple( tuple1, this.context, this.workingMemory ); assertEquals( 2, - iteratorSize(this.memory.leftTupleIterator( this.context, this.workingMemory )) ); - - Iterator it = this.memory.leftTupleIterator( this.context, this.workingMemory ); - ReteTuple tuple = (ReteTuple) it.next(); - assertEquals(0, tuple.matchesSize() ); - tuple = (ReteTuple) it.next(); - assertEquals(0, tuple.matchesSize() ); - assertFalse(it.hasNext()); - assertLength( 0, - this.sink.getAsserted() ); + this.memory.getLeftTupleMemory().size() ); + + ReteTuple tuple = this.memory.getFirstTuple(); + assertEquals( tuple0, + tuple ); + assertEquals( tuple1, + tuple.getNext() ); } /** @@ -155,15 +134,15 @@ */ public void testAssertObject() throws Exception { FactHandleImpl f0 = (FactHandleImpl) this.workingMemory.assertObject( "test0" ); - - // assert tuple, should add one to left memory + + // assert object, should add one to right memory this.node.assertObject( f0, this.context, this.workingMemory ); assertEquals( 0, - iteratorSize(this.memory.leftTupleIterator( this.context, this.workingMemory )) ); + this.memory.getLeftTupleMemory().size() ); assertEquals( 1, - iteratorSize(this.memory.rightObjectIterator( ) ) ); + this.memory.getRightFactHandleMemory().size() ); // check new objects/handles still assert FactHandleImpl f1 = (FactHandleImpl) this.workingMemory.assertObject( "test1" ); @@ -171,22 +150,14 @@ this.context, this.workingMemory ); assertEquals( 2, - iteratorSize(this.memory.rightObjectIterator( ) ) ); - - Iterator it = this.memory.rightObjectIterator(); - Set set = new HashSet(); - set.add(((ObjectMatches) it.next()).getFactHandle()); - set.add(((ObjectMatches) it.next()).getFactHandle()); - assertFalse(it.hasNext()); - - assertContains( f0, set ); - assertContains( f1, set ); + this.memory.getRightFactHandleMemory().size() ); - // make sure there have been no left memory increases or propagation - assertEquals( 0, - iteratorSize(this.memory.leftTupleIterator( this.context, this.workingMemory ) ) ); - assertLength( 0, - this.sink.getAsserted() ); + Map map = this.memory.getRightFactHandleMemory(); + + assertContains( f0, + map.keySet() ); + assertContains( f1, + map.keySet() ); } /** @@ -195,69 +166,50 @@ * @throws Exception */ public void testAssertPropagations() throws Exception { - // Assert first tuple - FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); + // assert first right object + FactHandleImpl f0 = (FactHandleImpl) this.workingMemory.assertObject( "test0" ); + this.node.assertObject( f0, + this.context, + this.workingMemory ); + + // assert tuple, should add left memory should be 2 + FactHandleImpl f1 = new FactHandleImpl( 1 ); + ReteTuple tuple1 = new ReteTuple( f1 ); this.node.assertTuple( tuple1, this.context, this.workingMemory ); - - // Assert second tuple - FactHandleImpl f1 = new FactHandleImpl( 0 ); - ReteTuple tuple2 = new ReteTuple( 1, - f1, - this.workingMemory ); - this.node.assertTuple( tuple2, - this.context, - this.workingMemory ); - // Assert an object and make sure we get matches and propogations - FactHandleImpl f2 = (FactHandleImpl) this.workingMemory.assertObject( "test1" ); - this.node.assertObject( f2, - this.context, - this.workingMemory ); - - BetaMemory betaMemory = (BetaMemory) this.workingMemory.getNodeMemory( this.node ); - - ObjectMatches matches1 = (ObjectMatches) betaMemory.rightObjectIterator().next(); - - assertEquals( 2, - iteratorSize( matches1.iterator( context, workingMemory ) ) ); - assertLength( 1, - tuple1.getTupleMatches().values() ); - assertLength( 1, - tuple2.getTupleMatches().values() ); - assertLength( 2, - this.sink.getAsserted() ); + // check bi directional match to resulting TupleMatch + Map map = tuple1.getTupleMatches(); + TupleMatch match = (TupleMatch) map.get( f0 ); - // Assert another tuple and make sure there was one propagation - FactHandleImpl f3 = new FactHandleImpl( 3 ); - ReteTuple tuple3 = new ReteTuple( 0, - f3, - this.workingMemory ); + ObjectMatches matches = (ObjectMatches) this.memory.getRightFactHandleMemory().get( f0 ); + assertSame( match, + matches.getFirstTupleMatch() ); - this.node.assertTuple( tuple3, + // check reference form TupleMatch to propgated ReteTuple + assertSame( match.getJoinedTuples().get( 0 ), + ((Object[]) this.sink.getAsserted().get( 0 ))[0] ); + + // check objectmatches correct references second asserted tuple + FactHandleImpl f2 = new FactHandleImpl( 2 ); + ReteTuple tuple2 = new ReteTuple( f2 ); + this.node.assertTuple( tuple2, this.context, this.workingMemory ); - assertLength( 3, - this.sink.getAsserted() ); - // Assert another object and make sure there were three propagations - FactHandleImpl f4 = (FactHandleImpl) this.workingMemory.assertObject( "test2" ); - this.node.assertObject( f4, + assertSame( ((Map) tuple2.getTupleMatches()).get( f0 ), + matches.getFirstTupleMatch().getNext() ); + + FactHandleImpl f3 = (FactHandleImpl) this.workingMemory.assertObject( "test2" ); + this.node.assertObject( f3, this.context, this.workingMemory ); - - assertEquals( 3, - iteratorSize( matches1.iterator( context, workingMemory ) ) ); - assertLength( 2, - tuple1.getTupleMatches().values() ); - assertLength( 2, - tuple2.getTupleMatches().values() ); - assertLength( 6, - this.sink.getAsserted() ); + matches = (ObjectMatches) this.memory.getRightFactHandleMemory().get( f3 ); + assertSame( ((Map) tuple1.getTupleMatches()).get( f3 ), + matches.getFirstTupleMatch() ); + assertSame( ((Map) tuple2.getTupleMatches()).get( f3 ), + matches.getFirstTupleMatch().getNext() ); } /** @@ -267,286 +219,143 @@ * @throws RetractionException */ public void testRetractTuple() throws Exception { - // Assert first tuple - FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); + // setup 2 tuples 3 fact handles + FactHandleImpl f0 = (FactHandleImpl) this.workingMemory.assertObject( "test0" ); + this.node.assertObject( f0, + this.context, + this.workingMemory ); + + FactHandleImpl f1 = (FactHandleImpl) this.workingMemory.assertObject( "test1" ); + ReteTuple tuple1 = new ReteTuple( f1 ); this.node.assertTuple( tuple1, this.context, this.workingMemory ); - - // Assert second tuple - FactHandleImpl f1 = new FactHandleImpl( 0 ); - ReteTuple tuple2 = new ReteTuple( 1, - f1, - this.workingMemory ); + + FactHandleImpl f2 = (FactHandleImpl) this.workingMemory.assertObject( "test2" ); + ReteTuple tuple2 = new ReteTuple( f2 ); this.node.assertTuple( tuple2, this.context, this.workingMemory ); - // Assert an object and make sure we get matches and propogations - FactHandleImpl f2 = (FactHandleImpl) this.workingMemory.assertObject( "test1" ); - this.node.assertObject( f2, + FactHandleImpl f3 = (FactHandleImpl) this.workingMemory.assertObject( "test3" ); + this.node.assertObject( f3, this.context, - this.workingMemory ); - - // Assert another object and make sure there were three propagations - FactHandleImpl f4 = (FactHandleImpl) this.workingMemory.assertObject( "test2" ); + this.workingMemory ); + + FactHandleImpl f4 = (FactHandleImpl) this.workingMemory.assertObject( "test4" ); this.node.assertObject( f4, this.context, this.workingMemory ); - - BetaMemory betaMemory = (BetaMemory) this.workingMemory.getNodeMemory( this.node ); - ObjectMatches matches1 = (ObjectMatches) betaMemory.rightObjectIterator().next(); - assertEquals( 2, - iteratorSize( betaMemory.leftTupleIterator(this.context, this.workingMemory ) ) ); - assertEquals( 2, - iteratorSize( matches1.iterator( context, workingMemory ) ) ); - assertLength( 2, - tuple1.getTupleMatches().values() ); - assertLength( 2, - tuple2.getTupleMatches().values() ); - assertLength( 4, - this.sink.getAsserted() ); - - tuple1.remove( this.context, this.workingMemory ); + assertLength( 6, + this.sink.getAsserted() ); - assertEquals( 1, - iteratorSize( betaMemory.leftTupleIterator(this.context, this.workingMemory ) ) ); - - assertEquals( 1, - iteratorSize( matches1.iterator( context, workingMemory ) ) ); - assertEquals( tuple2, - betaMemory.leftTupleIterator(this.context, this.workingMemory ).next() ); + // Retract an object and make sure its removed from the previous + // matching ReteTuples + this.node.retractObject( f0, + this.context, + this.workingMemory ); assertLength( 2, - tuple2.getTupleMatches().values() ); - - } + this.sink.getRetracted() ); - /** - * Test Object retraction - * - * @throws Exception - * @throws RetractionException - */ - public void testRetractObject() throws Exception { - FactHandleImpl f0 = new FactHandleImpl( 0 ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); - this.node.assertTuple( tuple1, - this.context, - this.workingMemory ); - - // assert object, should add one to right memory - FactHandleImpl f1 = new FactHandleImpl( 1 ); - this.node.assertObject( f1, + assertNull( this.memory.getRightFactHandleMemory().get( f0 ) ); + assertNull( tuple1.getTupleMatches().get( f0 ) ); + assertNull( tuple2.getTupleMatches().get( f0 ) ); + + this.node.retractTuple( tuple2, this.context, - this.workingMemory ); - - BetaMemory betaMemory = (BetaMemory) this.workingMemory.getNodeMemory( this.node ); - ObjectMatches objectMatches = (ObjectMatches) betaMemory.rightObjectIterator().next(); - assertEquals(1, iteratorSize( objectMatches.iterator( context, workingMemory ) ) ); - - ReteTuple tuple = (ReteTuple) betaMemory.leftTupleIterator( context, workingMemory ).next(); - assertLength(1, tuple.getTupleMatches().values() ); - - this.node.retractObject( f1, context, workingMemory ); - - assertEquals(0, iteratorSize( betaMemory.rightObjectIterator() ) ); - assertLength(0, tuple.getTupleMatches().values() ); + this.workingMemory ); + ObjectMatches matches = (ObjectMatches) this.memory.getRightFactHandleMemory().get( f3 ); + for ( TupleMatch match = matches.getFirstTupleMatch(); match != null; match = (TupleMatch) match.getNext() ) { + assertNotSame( tuple2, + match.getTuple() ); + } + + matches = (ObjectMatches) this.memory.getRightFactHandleMemory().get( f4 ); + for ( TupleMatch match = matches.getFirstTupleMatch(); match != null; match = (TupleMatch) match.getNext() ) { + assertNotSame( tuple2, + match.getTuple() ); + } + assertLength( 4, + this.sink.getRetracted() ); } - - - /** - * While all the previous tests work with the DefaultJoinNodeBinder, ie - * joins always succeed. This tests joins with - * PredicateExpressionConstraint. We only use one constraint, as Constraints - * are tested more thorougly else where, likewise for this reason we use a - * very simple constraint. - * - * @throws Exception - * - */ - public void testJoinNodeWithConstraint() throws Exception { - FieldExtractor priceExtractor = new ClassFieldExtractor( Cheese.class, - Cheese.getIndex( Cheese.class, - "price" ) ); - - // Bind the extractor to a decleration - // Declarations know the column they derive their value form - Declaration price1Declaration = new Declaration( 0, - "price1", - priceExtractor, - 0 ); - - // Bind the extractor to a decleration - // Declarations know the column they derive their value form - Declaration price2Declaration = new Declaration( 1, - "price2", - priceExtractor, - 1 ); - - PredicateExpression evaluator = new PredicateExpression() { - - public boolean evaluate(Tuple tuple, - FactHandle factHandle, - Declaration declaration, - Declaration[] declarations, - WorkingMemory workingMemory) { - int price1 = ((Integer) declarations[0].getValue( workingMemory.getObject( tuple.get( declarations[0] ) ) )).intValue(); - int price2 = ( (Integer) declaration.getValue( workingMemory.getObject( factHandle ) ) ).intValue(); - - return (price2 == (price1 * 2)); - - } - }; - - PredicateConstraint constraint = new PredicateConstraint( evaluator, - price2Declaration, - new Declaration[]{price1Declaration} ); - - // string1Declaration is bound to column 3 - this.node = new JoinNode( 15, - new MockTupleSource( 5 ), - new MockObjectSource( 8 ), - 0, - new BetaNodeBinder( constraint ) ); - - this.node.addTupleSink( this.sink ); - - this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node ); - - // assert tuple - Cheese cheddar = new Cheese( "cheddar", 5 ); - FactHandleImpl f0 = (FactHandleImpl)this.workingMemory.assertObject( cheddar ); - ReteTuple tuple1 = new ReteTuple( 0, - f0, - this.workingMemory ); - this.node.assertTuple( tuple1, - this.context, - this.workingMemory ); - - // assert object - Cheese brie = new Cheese( "brie", 10 ); - FactHandleImpl f1 = (FactHandleImpl) this.workingMemory.assertObject( brie ); - this.node.assertObject( f1, + public void testConstraintPropagations() throws Exception { + this.constraint.isAllowed = false; + // assert first right object + FactHandleImpl f0 = (FactHandleImpl) this.workingMemory.assertObject( "test0" ); + this.node.assertObject( f0, this.context, this.workingMemory ); - // Join should work - assertLength( 1, - this.sink.getAsserted() ); - - Object[] list = (Object[]) this.sink.getAsserted().get( 0 ); - ReteTuple joinedTuple = (ReteTuple) list[0]; - assertEquals( new Cheese("cheddar", 5), - this.workingMemory.getObject( joinedTuple.get( 0 ) ) ); - - assertEquals( new Cheese("brie", 10), - this.workingMemory.getObject( joinedTuple.get( 1 ) ) ); - - // now check that constraint blocks these assertions /* assert tuple - Cheese stilton = new Cheese( "stilton", 12); - FactHandleImpl f2 = (FactHandleImpl) this.workingMemory.assertObject( stilton ); - ReteTuple tuple2 = new ReteTuple( 0, - f2, - this.workingMemory ); - this.node.assertTuple( tuple2, + // assert tuple, should add left memory should be 2 + FactHandleImpl f1 = new FactHandleImpl( 1 ); + ReteTuple tuple1 = new ReteTuple( f1 ); + this.node.assertTuple( tuple1, this.context, this.workingMemory ); - // nothing extra should be asserted - assertLength( 1, - this.sink.getAsserted() ); - // Although it will remember the tuple for possible future matches - assertEquals( 2, - iteratorSize( this.memory.leftTupleIterator( context, workingMemory ) ) ); - assertEquals( 1, - iteratorSize( this.memory.rightObjectIterator() ) ); - - // assert object - stilton = new Cheese( "stilton", 20); - FactHandleImpl f3 = new FactHandleImpl( 3 ); - this.workingMemory.putObject( f3, - stilton ); - this.node.assertObject( f3, - this.context, - this.workingMemory ); - // nothing extra should be asserted - assertLength( 1, + assertLength( 0, this.sink.getAsserted() ); - // Although it will remember the tuple for possible future matches - assertEquals( 2, - iteratorSize( this.memory.leftTupleIterator( context, workingMemory ) ) ); - assertEquals( 2, - iteratorSize( this.memory.rightObjectIterator() ) ); - - } - - - - public void testUpdateWithMemory() throws FactException { - WorkingMemoryImpl workingMemory = new WorkingMemoryImpl( new RuleBaseImpl() ); - - JoinNode joinNode = new JoinNode( 1, - this.tupleSource, - this.objectSource, - 1 ); - - // Add the first tuple sink and assert a tuple and object - // The sink has no memory - MockTupleSink sink1 = new MockTupleSink( 2 ); - joinNode.addTupleSink( sink1 ); - - FactHandleImpl f0 = new FactHandleImpl( 0 ); - workingMemory.putObject( f0, - "string0" ); - - ReteTuple tuple1 = new ReteTuple( 0, - f0, - workingMemory ); - - joinNode.assertTuple( tuple1, - this.context, - workingMemory ); - - String string1 = "string1"; - FactHandleImpl string1Handle = new FactHandleImpl( 1 ); - workingMemory.putObject( string1Handle, - string1 ); - - joinNode.assertObject( string1Handle, - this.context, - workingMemory ); - - assertLength( 1, - sink1.getAsserted() ); - - // Add the new sink, this should be updated from the re-processed - // joinnode memory - MockTupleSink sink2 = new MockTupleSink( 3 ); - joinNode.addTupleSink( sink2 ); + // check no matches + Map map = tuple1.getTupleMatches(); assertLength( 0, - sink2.getAsserted() ); + map.keySet() ); - joinNode.updateNewNode( workingMemory, - this.context ); - - assertLength( 1, - sink2.getAsserted() ); + assertNull( ((ObjectMatches) this.memory.getRightFactHandleMemory().get( f0 )).getFirstTupleMatch() ); } - - private int iteratorSize(Iterator it) { - int count = 0; - for (;it.hasNext();) { - it.next(); - ++count; - } - return count; - } + + // + // public void testUpdateWithMemory() throws FactException { + // WorkingMemoryImpl workingMemory = new WorkingMemoryImpl( new + // RuleBaseImpl() ); + // + // JoinNode joinNode = new JoinNode( 1, + // this.tupleSource, + // this.objectSource, + // 1 ); + // + // // Add the first tuple sink and assert a tuple and object + // // The sink has no memory + // MockTupleSink sink1 = new MockTupleSink( 2 ); + // joinNode.addTupleSink( sink1 ); + // + // FactHandleImpl f0 = new FactHandleImpl( 0 ); + // workingMemory.putObject( f0, + // "string0" ); + // + // ReteTuple tuple1 = new ReteTuple( 0, + // f0, + // workingMemory ); + // + // joinNode.assertTuple( tuple1, + // this.context, + // workingMemory ); + // + // String string1 = "string1"; + // FactHandleImpl string1Handle = new FactHandleImpl( 1 ); + // workingMemory.putObject( string1Handle, + // string1 ); + // + // joinNode.assertObject( string1Handle, + // this.context, + // workingMemory ); + // + // assertLength( 1, + // sink1.getAsserted() ); + // + // // Add the new sink, this should be updated from the re-processed + // // joinnode memory + // MockTupleSink sink2 = new MockTupleSink( 3 ); + // joinNode.addTupleSink( sink2 ); + // assertLength( 0, + // sink2.getAsserted() ); + // + // joinNode.updateNewNode( workingMemory, + // this.context ); + // + // assertLength( 1, + // sink2.getAsserted() ); + // } } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java 2006-02-06 07:14:17 UTC (rev 2274) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java 2006-02-06 07:32:52 UTC (rev 2275) @@ -3,15 +3,16 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; +import org.drools.FactException; import org.drools.spi.PropagationContext; public class MockTupleSink extends TupleSource implements TupleSink, NodeMemory { - private List asserted = new ArrayList(); + private List asserted = new ArrayList(); + private List retracted = new ArrayList(); public MockTupleSink() { super( 0 ); @@ -24,21 +25,25 @@ public void assertTuple(ReteTuple tuple, PropagationContext context, WorkingMemoryImpl workingMemory) { + this.asserted.add( new Object[]{tuple, context, workingMemory} ); - if ( workingMemory != null ) { - Map map = (Map) workingMemory.getNodeMemory( this ); - map.put( tuple.getKey(), - tuple ); - } + } - this.asserted.add( new Object[]{tuple, context, workingMemory} ); + public void retractTuple(ReteTuple tuple, + PropagationContext context, + WorkingMemoryImpl workingMemory) { + this.retracted.add( new Object[]{tuple, context, workingMemory} ); } public List getAsserted() { return this.asserted; } - + + public List getRetracted() { + return this.retracted; + } + public void ruleAttached() { // TODO Auto-generated method stub } @@ -66,7 +71,7 @@ } public void updateNewNode(WorkingMemoryImpl workingMemory, - PropagationContext context) { + PropagationContext context) throws FactException { // TODO Auto-generated method stub } Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/spi/MockConstraint.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/spi/MockConstraint.java 2006-02-06 07:14:17 UTC (rev 2274) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/spi/MockConstraint.java 2006-02-06 07:32:52 UTC (rev 2275) @@ -0,0 +1,25 @@ +package org.drools.spi; + +import org.drools.FactHandle; +import org.drools.WorkingMemory; +import org.drools.rule.Declaration; + +public class MockConstraint + implements + FieldConstraint { + + public Declaration[] declarations; + + public boolean isAllowed = true; + + public boolean isAllowed(FactHandle handle, + Tuple tuple, + WorkingMemory workingMemory) { + return this.isAllowed; + } + + public Declaration[] getRequiredDeclarations() { + return declarations; + } + +} |
From: <jbo...@li...> - 2006-02-06 07:14:24
|
Author: mic...@jb... Date: 2006-02-06 02:14:17 -0500 (Mon, 06 Feb 2006) New Revision: 2274 Modified: trunk/labs/jbossrules/drools-core/pom.xml trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java Log: fixed up usage of CGLib Modified: trunk/labs/jbossrules/drools-core/pom.xml =================================================================== --- trunk/labs/jbossrules/drools-core/pom.xml 2006-02-06 07:11:44 UTC (rev 2273) +++ trunk/labs/jbossrules/drools-core/pom.xml 2006-02-06 07:14:17 UTC (rev 2274) @@ -35,6 +35,12 @@ <artifactId>jparsec</artifactId> <version>0.01</version> </dependency> + <dependency> + <groupId>cglib</groupId> + <artifactId>cglib</artifactId> + <version>2.1_3</version> + </dependency> + <!-- only needed for the default expander in lang.. remove when it is refactored. --> <dependency> Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-06 07:11:44 UTC (rev 2273) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-06 07:14:17 UTC (rev 2274) @@ -11,28 +11,12 @@ public class ProxyGeneratorTest extends TestCase { - public void testNonShadow() throws IOException { - Person original = new Person(); - original.setAge(31); - original.setName("michael"); - - Person p = (Person) ProxyGenerator.generateProxy(original, false, false); - standardTests( original, - p ); - - - //check that stuff is passed through (bypasses the proxy). - p.changeName("jo"); - assertEquals("jo", p.getName()); - assertEquals("jo", original.getName()); - } - public void testShadow() throws IOException { Person original = new Person(); original.setAge(31); original.setName("michael"); - Person p = (Person) ProxyGenerator.generateProxy(original, true, false); + Person p = (Person) ProxyGenerator.generateProxyWithShadow(original); standardTests( original, p ); @@ -48,7 +32,7 @@ original.setAge(31); original.setName("michael"); - Person p = (Person) ProxyGenerator.generateProxy(original, false, true); + Person p = (Person) ProxyGenerator.generateChangeListenerProxy(original); standardTests( original, p ); @@ -89,10 +73,9 @@ public void testOtherObject() throws Exception { Person p = new Person(); - Object personProxy = ProxyGenerator.generateProxy(p, false, false); - + Child c = new Child(new BigInteger("321321321"), "Chloe Emma Neale"); - Child proxyChild = (Child) ProxyGenerator.generateProxy(c, true, false); + Child proxyChild = (Child) ProxyGenerator.generateProxyWithShadow(c); assertNotSame(proxyChild, c); assertEquals(proxyChild.getName(), c.getName()); } @@ -101,7 +84,6 @@ private void standardTests(Person original, Person p) { - assertTrue(p instanceof FieldIndexAccessor); assertNotSame(p, original); //check we can use the proxy @@ -109,18 +91,6 @@ assertEquals(original.getAge(), p.getAge()); assertEquals(original.isHappy(), p.isHappy()); - FieldIndexAccessor s = (FieldIndexAccessor) p; - - //check that order of declarations count, and we can access then via the indexaccessor interface - assertNotNull(p.getName(), s.getField(1)); - assertEquals(p.getAge(), ((Integer)s.getField(2)).intValue()); - assertEquals(p.isHappy(), ((Boolean) s.getField(3)).booleanValue()); - - - //now check that you can get back to the target - assertTrue(p instanceof TargetAccessor); - TargetAccessor t = (TargetAccessor) p; - assertEquals(original, t.getTarget()); } public void testPerf() throws Exception { @@ -129,7 +99,7 @@ o.setName("michael"); o.setAge(31); - Person p = (Person) ProxyGenerator.generateProxy(o, true, false); + Person p = (Person) ProxyGenerator.generateChangeListenerProxy(o); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { |
From: <jbo...@li...> - 2006-02-06 07:11:52
|
Author: mic...@jb... Date: 2006-02-06 02:11:44 -0500 (Mon, 06 Feb 2006) New Revision: 2273 Removed: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldIndexAccessor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/TargetAccessor.java Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java Log: tidy up proxy stuff for refactoring Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java 2006-02-06 05:20:41 UTC (rev 2272) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java 2006-02-06 07:11:44 UTC (rev 2273) @@ -18,9 +18,7 @@ * * @author Michael Neale */ -public class ChangeListenerFactInterceptor - extends - FactInterceptor { +public class ChangeListenerFactInterceptor extends FactInterceptor { protected static final Method addListener = getAddListener(); @@ -33,9 +31,11 @@ //a map of properties, keyed on setter method protected final Map properties; + private final Object target; - public ChangeListenerFactInterceptor(Object target, Method[] fieldMethods) { - super(target, fieldMethods); + + public ChangeListenerFactInterceptor(Object target) { + this.target = target; try{ properties = loadPropertyInfo( target ); changes = new PropertyChangeSupport(target); @@ -72,13 +72,8 @@ Method method, Object[] args, MethodProxy proxy) throws Throwable { - Class decClass = method.getDeclaringClass(); - if (decClass == FieldIndexAccessor.class ) { - Integer arg = (Integer) args[0]; - return targetFields[arg.intValue() - 1].invoke(target, null); - } else if (decClass == TargetAccessor.class ) { - return target; - } else if (method.equals(addListener)) { + + if (method.equals(addListener)) { addListener(args[0]); return null; } else if (method.equals(removeListenerMethod)) { Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java 2006-02-06 05:20:41 UTC (rev 2272) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java 2006-02-06 07:11:44 UTC (rev 2273) @@ -5,43 +5,14 @@ import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; -/** - * This implements the stuff used by the dynamic proxies that are wrapped around facts. - * - * @author Michael Neale - */ -public class FactInterceptor - implements - MethodInterceptor { +/** Dummy parent class */ +public class FactInterceptor implements MethodInterceptor { - protected final Object target; - - protected final Method[] targetFields; - - public FactInterceptor(Object target, Method[] fieldMethods) { - this.target = target; - this.targetFields = fieldMethods; - } - - public Object intercept(Object obj, - Method method, - Object[] args, - MethodProxy proxy) throws Throwable { - if (method.getDeclaringClass() == FieldIndexAccessor.class ) { - Integer arg = (Integer) args[0]; - return targetFields[arg.intValue() - 1].invoke(target, null); - } else if (method.getDeclaringClass() == TargetAccessor.class ) { - return target; - } -// } else if (method.getDeclaringClass() == SerializableProxy.class) { -// -// } - return method.invoke(target, args); - + public Object intercept(Object arg0, + Method arg1, + Object[] arg2, + MethodProxy arg3) throws Throwable { + return null; } - - - - } Deleted: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldIndexAccessor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldIndexAccessor.java 2006-02-06 05:20:41 UTC (rev 2272) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FieldIndexAccessor.java 2006-02-06 07:11:44 UTC (rev 2273) @@ -1,22 +0,0 @@ -package org.drools.util.proxy; - -/** - * This provides access to "fields" by number. - * Fields are properties, essentually. - * - * Actually, they are methods are public "getXXX", or "isXXX" and take no parameters, and return something. - * - * The order in which they are numbered are the order in which they appear in the class file. - * (NOT the order of the attributes which they expose, which according to *my* reading of the bytecode spec, - * is not defined. - * - * Of course, if code obfuscators were used this may mean that it is also out of order (but at least consistent). - * A future enhancement would be to allow annotations to specify the order, or similar. - * - * @author Michael Neale - */ -public interface FieldIndexAccessor { - - Object getField(int index); - -} Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java 2006-02-06 05:20:41 UTC (rev 2272) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java 2006-02-06 07:11:44 UTC (rev 2273) @@ -29,38 +29,28 @@ //cache the generated classes, and lists of indexable "fields" on each pojo class static Map cache = new HashMap(); - /** - * Generate a proxy that adds in a field index accessor, and an accessor to get to the target. - * Shadow and non shadow options are available etc. - * - * @param pojo The end user object which is to be proxied. Must have empty constructor, be non final etc. - * @param shadow If true, accessible "fields" (indicated by "getters") will be shallow copied, and accessed when reading. - * @param propertyChangeListener If true, this will add in property change support. So all setters notify of changes. - * This can be used with the property change support in the rule engine. This option is mutually exclusive with shadow, - * as they are both ways to solve the same problem. - * - * @throws IOException If unable to load the class data to proxy. - */ - public static Object generateProxy(Object pojo, boolean shadow, boolean propertyChangeListener) throws IOException { + public static Object generateChangeListenerProxy(Object pojo) throws IOException { Class cls = pojo.getClass(); - GeneratedEntry holder = getEntryFor(cls); - Factory factory = holder.instanceFactory; - Method[] fieldMethods = holder.fieldMethods; FactInterceptor interceptor; - if (shadow) { - interceptor = new ShadowedFactInterceptor(pojo, fieldMethods); - } else if (propertyChangeListener) { - interceptor = new ChangeListenerFactInterceptor(pojo, fieldMethods); - } else { - interceptor = new FactInterceptor(pojo, fieldMethods); - } + interceptor = new ChangeListenerFactInterceptor(pojo); return factory.newInstance(interceptor); } + public static Object generateProxyWithShadow(Object pojo) throws IOException { + Class cls = pojo.getClass(); + GeneratedEntry holder = getEntryFor(cls); + Factory factory = holder.instanceFactory; + FactInterceptor interceptor; + interceptor = new ShadowedFactInterceptor(pojo, holder.fieldMethods); + + return factory.newInstance(interceptor); + } + + /** * Keep a cache of generated classes (actually keeps a prototype instance) * and lists of methods for accessing fields. @@ -69,9 +59,7 @@ GeneratedEntry entry = (GeneratedEntry) cache.get(pojoClass); if (entry == null) { entry = new GeneratedEntry(); - entry.instanceFactory = createInstanceFactory(pojoClass, new Class[] {FieldIndexAccessor.class, - TargetAccessor.class, - ChangeListener.class}); + entry.instanceFactory = createInstanceFactory(pojoClass, new Class[] {ChangeListener.class}); entry.fieldMethods = extractFieldMethodsInOrder(pojoClass); cache.put(pojoClass, entry); } @@ -87,7 +75,7 @@ enhancer.setSuperclass(pojoClass); enhancer.setInterfaces(interfaces); //just need some callback of the correct type to keep it happy, gets replaced when instantiating anyway. - enhancer.setCallback(new FactInterceptor(null, null)); + enhancer.setCallback(new FactInterceptor()); return (Factory) enhancer.create(); } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-06 05:20:41 UTC (rev 2272) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-06 07:11:44 UTC (rev 2273) @@ -19,18 +19,22 @@ * If the getField method of the FieldIndexAccessor interface is used, the shadow is returned. * Otherwise its just normal, turtles all the way down. * + * TODO: this needs to use a property change listener, and queue up the changes, rather then applying them + * directly. Can then have another method that refreshes the shadow data. + * Could do this with the ChangeListener version. + * * @author Michael Neale */ public class ShadowedFactInterceptor extends FactInterceptor { private final Object[] values; private final Map fieldToValue; + private final Object target; public ShadowedFactInterceptor(Object target, Method[] fieldMethods) { - super( target, - fieldMethods ); + this.target = target; fieldToValue = new HashMap(); int numOfFields = fieldMethods.length; @@ -57,15 +61,6 @@ Object[] args, MethodProxy proxy) throws Throwable { - //this one is a little different... - Class methodClass = method.getDeclaringClass(); - - if (methodClass == FieldIndexAccessor.class ) { - Integer arg = (Integer) args[0]; - return values[arg.intValue() - 1]; - } else if (methodClass == TargetAccessor.class ) { - return target; - } else { //check if method is in targetFields Object val = fieldToValue.get(method); if (val != null) { @@ -74,7 +69,6 @@ //bugger it, lets pass through. return method.invoke(target, args); } - } } } Deleted: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/TargetAccessor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/TargetAccessor.java 2006-02-06 05:20:41 UTC (rev 2272) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/TargetAccessor.java 2006-02-06 07:11:44 UTC (rev 2273) @@ -1,14 +0,0 @@ -package org.drools.util.proxy; - -/** - * All proxies implement this to allow access to the underlying object. - * @author Michael Neale - */ -public interface TargetAccessor { - - /** - * This will return the target pojo that has been proxied. - */ - Object getTarget(); - -} |
From: <jbo...@li...> - 2006-02-06 05:20:47
|
Author: mar...@jb... Date: 2006-02-06 00:20:41 -0500 (Mon, 06 Feb 2006) New Revision: 2272 Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/RuntimeDroolsException.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/BetaNodeBinder.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/Constraint.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/AbstractBaseLinkedListNode.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNode.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNodeWrapper.java Log: -Adds new LinkedList based Rete implementation Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/RuntimeDroolsException.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/RuntimeDroolsException.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/RuntimeDroolsException.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,44 @@ +package org.drools; + +/** + * The base Drools exception for all internal thrown exceptions. If any exceptions are thrown during the + * runtime execution of Drools they are considered non-recoverable and thus thrown as Runtime exceptions + * all the way up to the <Code>WorkingMemory</code> at which point they are nested inside the + * <code>CheckedDroolsException</code> for the user to decide how to respond. + * + * @see RuntimeException + * + * @author <a href="mailto:mar...@jb...">Mark Proctor</a> + * @author <a href="mailto:bo...@we...">Bob McWhirter</a> + */ +public class RuntimeDroolsException extends RuntimeException { + /** + * @see java.lang.Exception#Exception() + */ + public RuntimeDroolsException() { + super(); + } + + /** + * @see java.lang.Exception#Exception(String message) + */ + public RuntimeDroolsException(String message) { + super( message ); + } + + /** + * @see java.lang.Exception#Exception(String message, Throwable cause) + */ + public RuntimeDroolsException(String message, + Throwable cause) { + super( message ); + } + + /** + * @see java.lang.Exception#Exception(Throwable cause) + */ + public RuntimeDroolsException(Throwable cause) { + super( cause ); + } + +} Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/BetaNodeBinder.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/BetaNodeBinder.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/BetaNodeBinder.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,93 @@ +package org.drools.spi; + +import java.util.HashSet; +import java.util.Set; + +import org.drools.FactHandle; +import org.drools.WorkingMemory; +import org.drools.rule.Declaration; + +public class BetaNodeBinder { + + public final static BetaNodeBinder simpleBinder = new BetaNodeBinder(); + + private final FieldConstraint[] constraints; + + public BetaNodeBinder() { + this.constraints = null; + } + + public BetaNodeBinder(FieldConstraint constraint) { + this.constraints = new FieldConstraint[]{constraint}; + } + + public BetaNodeBinder(FieldConstraint[] constraints) { + this.constraints = constraints; + } + + public boolean isAllowed(FactHandle handle, + Tuple tuple, + WorkingMemory workingMemory) { + if ( this.constraints == null ) { + return true; + } + + for ( int i = 0; i < this.constraints.length; i++ ) { + if ( !this.constraints[i].isAllowed( handle, + tuple, + workingMemory ) ) { + return false; + } + } + return true; + } + + public Set getRequiredDeclarations() { + Set declarations = new HashSet(); + for ( int i = 0; i < this.constraints.length; i++ ) { + Declaration[] array = this.constraints[i].getRequiredDeclarations(); + for ( int j = 0; j < array.length; j++ ) { + declarations.add( array[j] ); + } + } + return declarations; + } + + public int hashCode() { + return this.constraints.hashCode(); + } + + /** + * Determine if another object is equal to this. + * + * @param object + * The object to test. + * + * @return <code>true</code> if <code>object</code> is equal to this, + * otherwise <code>false</code>. + */ + public boolean equals(Object object) { + if ( this == object ) { + return true; + } + + if ( object == null || getClass() != object.getClass() ) { + return false; + } + + BetaNodeBinder other = (BetaNodeBinder) object; + + if ( this.constraints.length != other.constraints.length ) { + return false; + } + + for ( int i = 0; i < this.constraints.length; i++ ) { + if ( !this.constraints[i].equals( other.constraints[i] ) ) { + return false; + } + } + + return true; + } + +} Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/Constraint.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/Constraint.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/spi/Constraint.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,5 @@ +package org.drools.spi; + +public interface Constraint { + +} Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/AbstractBaseLinkedListNode.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/AbstractBaseLinkedListNode.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/AbstractBaseLinkedListNode.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,66 @@ +package org.drools.util; +/* + * Copyright 2005 JBoss Inc + * + * 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. + */ + + +/** + * Provides a abstract base implementation that an object can extend so that it can be used in a LinkedList. + * + * @see LinkedList + * + * @author <a href="mailto:mar...@jb...">Mark Proctor</a> + * @author <a href="mailto:bo...@we...">Bob McWhirter</a> + */ +public class AbstractBaseLinkedListNode implements LinkedListNode { + private LinkedListNode previous; + + private LinkedListNode next; + + /** + * Empty Constructor + */ + public AbstractBaseLinkedListNode() { + } + + + /* (non-Javadoc) + * @see org.drools.reteoo.LinkedListNode#getNext() + */ + public LinkedListNode getNext() { + return this.next; + } + + /* (non-Javadoc) + * @see org.drools.reteoo.LinkedListNode#setNext(org.drools.reteoo.LinkedListNode) + */ + public void setNext(LinkedListNode next) { + this.next = next; + } + + /* (non-Javadoc) + * @see org.drools.reteoo.LinkedListNode#getPrevious() + */ + public LinkedListNode getPrevious() { + return this.previous; + } + + /* (non-Javadoc) + * @see org.drools.reteoo.LinkedListNode#setPrevious(org.drools.reteoo.LinkedListNode) + */ + public void setPrevious(LinkedListNode previous) { + this.previous = previous; + } +} Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedList.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,196 @@ +package org.drools.util; +/* + * Copyright 2005 JBoss Inc + * + * 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. + */ + + +/** + * This is a simple linked linked implementation. Each node must implement </code>LinkedListNode<code> so that it references + * the node before and after it. This way a node can be removed without having to scan the list to find it. This class + * does not provide an Iterator implementation as its designed for efficiency and not genericity. There are a number of + * ways to iterate the list. + * <p> + * Simple iterator: + * <pre> + * for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) { + * } + * </pre> + * + * Iterator that pops the first entry: + * <pre> + * for ( LinkedListNode node = list.removeFirst(); node != null; node = list.removeFirst() ) { + * } + * </pre> + * + * + * @author <a href="mailto:mar...@jb...">Mark Proctor</a> + * @author <a href="mailto:bo...@we...">Bob McWhirter</a> + * + */ +public class LinkedList { + private LinkedListNode firstNode; + private LinkedListNode lastNode; + + private int size; + + + /** + * Construct an empty <code>LinkedList</code> + */ + public LinkedList() { + + } + + + /** + * Add a <code>LinkedListNode</code> to the list. If the <code>LinkedList</code> is empty then the first and + * last nodes are set to the added node. + * + * @param node + * The <code>LinkedListNode</code> to be added + */ + public void add(LinkedListNode node) { + if ( this.firstNode == null ) { + this.firstNode = node; + this.lastNode = node;; + } else { + this.lastNode.setNext( node ); + node.setPrevious( this.lastNode ); + this.lastNode = node; + } + this.size++; + } + + /** + * Removes a <code>LinkedListNode</code> from the list. This works by attach the previous reference to the child reference. + * When the node to be removed is the first node it calls <code>removeFirst()</code>. When the node to be removed is the last node + * it calls <code>removeLast()</code>. + * + * @param node + * The <code>LinkedListNode</code> to be removed. + */ + public void remove(LinkedListNode node) { + if ( this.firstNode != node && this.lastNode != node ) { + node.getPrevious().setNext( node.getNext() ); + node.getNext().setPrevious( node.getPrevious() ); + } else { + if ( this.firstNode == node ) { + removeFirst(); + } + + if ( this.lastNode == node ) { + removeLast(); + } + } + this.size--; + } + + + /** + * Return the first node in the list + * @return + * The first <code>LinkedListNode</code>. + */ + public LinkedListNode getFirst() { + return this.firstNode; + } + + /** + * Return the last node in the list + * @return + * The last <code>LinkedListNode</code>. + */ + public LinkedListNode getLast() { + return this.lastNode; + } + + /** + * Remove the first node from the list. The next node then becomes the first node. If this is the last + * node then both first and last node references are set to null. + * + * @return + * The first <code>LinkedListNode</code>. + */ + public LinkedListNode removeFirst() { + if ( this.firstNode == null ) { + return null; + } + LinkedListNode node = this.firstNode; + this.firstNode = node.getNext(); + if ( this.firstNode != null ) { + if ( this.firstNode.getPrevious() != null ) { + this.firstNode.setPrevious( null ); + } + if ( this.firstNode.getNext() == null ) { + this.lastNode = this.firstNode; + } + } else { + this.lastNode = null; + } + this.size--; + return node; + } + + /** + * Remove the last node from the list. The previous node then becomes the last node. If this is the last + * node then both first and last node references are set to null. + * + * @return + * The first <code>LinkedListNode</code>. + */ + public LinkedListNode removeLast() { + if ( this.lastNode == null ) { + return null; + } + LinkedListNode node = this.lastNode; + this.lastNode = node.getPrevious(); + if ( this.lastNode != null) { + if (this.lastNode.getNext() != null ) { + this.lastNode.setNext( null ); + } + if (this.lastNode.getPrevious() == null) { + this.firstNode = this.lastNode; + } + this.lastNode.setNext( null ); + } else { + this.firstNode = this.lastNode; + } + this.size--; + return node; + } + + /** + * @return + * boolean value indicating the empty status of the list + */ + public boolean isEmpty() { + return (this.firstNode == null); + } + + /** + * Iterates the list removing all the nodes until there are no more nodes to remove. + */ + public void clear() { + while ( removeFirst() != null) { } + } + + /** + * @return + * return size of the list as an int + */ + public int size() { + return this.size; + } +} Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNode.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNode.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNode.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,57 @@ +package org.drools.util; +/* + * Copyright 2005 JBoss Inc + * + * 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. + */ + + +/** + * Items placed in a <code>LinkedList<code> must implement this interface . + * + * @see LinkedList + * + * @author <a href="mailto:mar...@jb...">Mark Proctor</a> + * @author <a href="mailto:bo...@we...">Bob McWhirter</a> + */ +public interface LinkedListNode { + + /** + * Returns the next node + * @return + * The next LinkedListNode + */ + public LinkedListNode getNext(); + + /** + * Sets the next node + * @param next + * The next LinkedListNode + */ + public void setNext(LinkedListNode next); + + /** + * Returns the previous node + * @return + * The previous LinkedListNode + */ + public LinkedListNode getPrevious(); + + /** + * Sets the previous node + * @param previous + * The previous LinkedListNode + */ + public void setPrevious(LinkedListNode previous); + +} Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNodeWrapper.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNodeWrapper.java 2006-02-06 05:13:20 UTC (rev 2271) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/LinkedListNodeWrapper.java 2006-02-06 05:20:41 UTC (rev 2272) @@ -0,0 +1,28 @@ +package org.drools.util; +/* + * Copyright 2005 JBoss Inc + * + * 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. + */ + +public class LinkedListNodeWrapper extends AbstractBaseLinkedListNode { + private LinkedListNode node; + + public LinkedListNodeWrapper(LinkedListNode node) { + this.node = node; + } + + public LinkedListNode getNode() { + return this.node; + } +} |
From: <jbo...@li...> - 2006-02-06 05:01:20
|
Author: mar...@jb... Date: 2006-02-06 00:01:16 -0500 (Mon, 06 Feb 2006) New Revision: 2270 Added: labels/labs/jbossrules/standard_rete/ Log: This is a tag of drools with the basic rete code, before the linked list based rete code is commited. Copied: labels/labs/jbossrules/standard_rete (from rev 2269, trunk/labs/jbossrules) |
From: <jbo...@li...> - 2006-02-06 01:29:06
|
Author: unibrew Date: 2006-02-05 20:28:57 -0500 (Sun, 05 Feb 2006) New Revision: 2269 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadsDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/elements/PropertiesHandlerDefault.java Log: [JBLAB-417] Update for downloads to cope with additional metadata. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadsDescriptor.java 2006-02-05 17:42:24 UTC (rev 2268) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadsDescriptor.java 2006-02-06 01:28:57 UTC (rev 2269) @@ -53,6 +53,7 @@ * A class for objects describing one download category. * * @author adamw + * @author Ryszard Kozmik */ public class DownloadsDescriptor extends AbstractDescriptor { /** @@ -292,10 +293,37 @@ epm.addPropertySupport("button", getButtonPropertiesHandler(downloadPrefix, pathCategoryContext, separator, portalName, projectId), - new BindingsHandlerIterSingleKey("button", "buttons", new Boolean(false))); + new BindingsHandlerIterSingleKey("button", "buttons", new Boolean(true))); + + epm.addPropertySupport("column", + getColumnsPropertiesHandler(downloadPrefix, pathCategoryContext, + separator, portalName, projectId), + new BindingsHandlerIterSingleKey("column","column",true)); + return epm; } + private PropertiesHandler getColumnsPropertiesHandler ( + final String downloadPrefix, final String pathCategoryContext, + final String separator, final String portalName, + final String projectId) { + return new PropertiesHandler() { + public void fillContext(PropertiesMap properties, DelegateContext context, + PermissionsChecker pc) { + context.put("value", properties.get("value").getFirstValue()); + } + + public void processNode(ElementDescriptor thisElement, Node node) { + + } + + public void collect(PropertiesMap properties, Object data, + PermissionsChecker pc) { + + } + }; + } + private PropertiesHandler getButtonPropertiesHandler( final String downloadPrefix, final String pathCategoryContext, final String separator, final String portalName, Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/elements/PropertiesHandlerDefault.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/elements/PropertiesHandlerDefault.java 2006-02-05 17:42:24 UTC (rev 2268) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/elements/PropertiesHandlerDefault.java 2006-02-06 01:28:57 UTC (rev 2269) @@ -21,6 +21,8 @@ */ package org.jboss.forge.common.projects.elements; +import java.util.List; + import org.jboss.forge.common.projects.permissions.PermissionsChecker; import org.jboss.portal.common.context.DelegateContext; import org.w3c.dom.Node; @@ -29,6 +31,7 @@ * A default properties handler - filling the id, name and description * fields. * @author adamw + * @author Ryszard Kozmik */ public class PropertiesHandlerDefault implements PropertiesHandler { public void fillContext(PropertiesMap properties, @@ -36,6 +39,13 @@ context.put("id", properties.get("id").getFirstValue()); context.put("name", properties.get("name").getFirstValue()); context.put("description", properties.get("description").getFirstValue()); + List<String> columnNames = properties.get("column-name").getAllValues(); + for (String columnName : columnNames) { + if (!columnName.equals("")) { + DelegateContext subContext = context.next("columns"); + subContext.put("name",columnName); + } + } } public void processNode(ElementDescriptor thisElement, Node node) { |
From: <jbo...@li...> - 2006-02-05 11:50:46
|
Author: mic...@jb... Date: 2006-02-05 06:50:30 -0500 (Sun, 05 Feb 2006) New Revision: 2266 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java Log: improved performance Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java 2006-02-05 08:58:44 UTC (rev 2265) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java 2006-02-05 11:50:30 UTC (rev 2266) @@ -73,15 +73,15 @@ Object[] args, MethodProxy proxy) throws Throwable { Class decClass = method.getDeclaringClass(); - if (decClass == indexAccessor.getDeclaringClass() ) { + if (decClass == FieldIndexAccessor.class ) { Integer arg = (Integer) args[0]; return targetFields[arg.intValue() - 1].invoke(target, null); - } else if (decClass == targetAccessor.getDeclaringClass() ) { + } else if (decClass == TargetAccessor.class ) { return target; - } else if (decClass == addListener.getDeclaringClass()) { + } else if (method.equals(addListener)) { addListener(args[0]); return null; - } else if (decClass == removeListenerMethod.getDeclaringClass()) { + } else if (method.equals(removeListenerMethod)) { removeListener(args[0]); return null; } else { Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java 2006-02-05 08:58:44 UTC (rev 2265) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/FactInterceptor.java 2006-02-05 11:50:30 UTC (rev 2266) @@ -7,10 +7,7 @@ /** * This implements the stuff used by the dynamic proxies that are wrapped around facts. - * This version is a simple non-shadow one. * - * This is where all the field handling is done. - * * @author Michael Neale */ public class FactInterceptor @@ -18,8 +15,7 @@ MethodInterceptor { protected final Object target; - protected static final Method indexAccessor = getIndexAccessor(); - protected static final Method targetAccessor = getTargetAccessor(); + protected final Method[] targetFields; public FactInterceptor(Object target, Method[] fieldMethods) { @@ -31,33 +27,21 @@ Method method, Object[] args, MethodProxy proxy) throws Throwable { - if (method.getDeclaringClass() == indexAccessor.getDeclaringClass() ) { + if (method.getDeclaringClass() == FieldIndexAccessor.class ) { Integer arg = (Integer) args[0]; return targetFields[arg.intValue() - 1].invoke(target, null); - } else if (method.getDeclaringClass() == targetAccessor.getDeclaringClass() ) { + } else if (method.getDeclaringClass() == TargetAccessor.class ) { return target; } +// } else if (method.getDeclaringClass() == SerializableProxy.class) { +// +// } return method.invoke(target, args); } - private static Method getIndexAccessor() { - try { - return FieldIndexAccessor.class.getMethod("getField", new Class[]{int.class}); - } - catch ( Exception e ) { - throw new IllegalStateException( e ); - } - } + + - private static Method getTargetAccessor() { - try { - return TargetAccessor.class.getMethod("getTarget", null); - } - catch ( Exception e ) { - throw new IllegalStateException( e ); - } - } - } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-05 08:58:44 UTC (rev 2265) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-05 11:50:30 UTC (rev 2266) @@ -60,10 +60,10 @@ //this one is a little different... Class methodClass = method.getDeclaringClass(); - if (methodClass == indexAccessor.getDeclaringClass() ) { + if (methodClass == FieldIndexAccessor.class ) { Integer arg = (Integer) args[0]; return values[arg.intValue() - 1]; - } else if (methodClass == targetAccessor.getDeclaringClass() ) { + } else if (methodClass == TargetAccessor.class ) { return target; } else { //check if method is in targetFields Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-05 08:58:44 UTC (rev 2265) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-05 11:50:30 UTC (rev 2266) @@ -81,6 +81,10 @@ assertEquals("jo", event.getOldValue()); assertEquals("chloe", event.getNewValue()); + cl.removePropertyChangeListener(listener); + p.setName("done"); + assertEquals(2, listener.events.size()); + } public void testOtherObject() throws Exception { @@ -140,10 +144,6 @@ System.out.println("Time taken native: " + (System.currentTimeMillis() - start)); - - - - } static class TestListener implements PropertyChangeListener { |
From: <jbo...@li...> - 2006-02-05 08:58:50
|
Author: mic...@jb... Date: 2006-02-05 03:58:44 -0500 (Sun, 05 Feb 2006) New Revision: 2265 Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java Log: added test for property listener Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-05 05:25:39 UTC (rev 2264) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-05 08:58:44 UTC (rev 2265) @@ -43,7 +43,7 @@ } - public void xxtestChangeListener() throws IOException { + public void testChangeListener() throws IOException { Person original = new Person(); original.setAge(31); original.setName("michael"); |
From: <jbo...@li...> - 2006-02-05 05:25:55
|
Author: mic...@jb... Date: 2006-02-05 00:25:39 -0500 (Sun, 05 Feb 2006) New Revision: 2264 Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListener.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/Child.java Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java Log: added property change support Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListener.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListener.java 2006-02-04 22:44:42 UTC (rev 2263) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListener.java 2006-02-05 05:25:39 UTC (rev 2264) @@ -0,0 +1,20 @@ +package org.drools.util.proxy; + +import java.beans.PropertyChangeListener; + +/** + * This is implemented by the proxy, optionally, to provide + * automatic notifications of changes to facts. + * + * All proxies implement this, however it is NOT active unless the correct params + * were set when the proxy was created. This this CAN NOT be used to test + * if an object has property change support or not. + * + * @author Michael Neale + */ +public interface ChangeListener { + + public void addPropertyChangeListener( PropertyChangeListener l ); + + public void removePropertyChangeListener( PropertyChangeListener l ); +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListener.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java 2006-02-04 22:44:42 UTC (rev 2263) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java 2006-02-05 05:25:39 UTC (rev 2264) @@ -0,0 +1,136 @@ +package org.drools.util.proxy; + +import java.beans.BeanInfo; +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +import net.sf.cglib.proxy.MethodProxy; + +/** + * This version of an interceptor enables property change listening, + * which the rule engine supports to notify changes to facts. + * + * @author Michael Neale + */ +public class ChangeListenerFactInterceptor + extends + FactInterceptor { + + + protected static final Method addListener = getAddListener(); + protected static final Method removeListenerMethod = getRemoveListener(); + //to cache property info, keyed on class + protected static final Map propertyInfoCache = new HashMap(); + + private final PropertyChangeSupport changes; + + //a map of properties, keyed on setter method + protected final Map properties; + + + public ChangeListenerFactInterceptor(Object target, Method[] fieldMethods) { + super(target, fieldMethods); + try{ + properties = loadPropertyInfo( target ); + changes = new PropertyChangeSupport(target); + } catch (IntrospectionException e) { + throw new IllegalStateException(e); + } + } + + private Map loadPropertyInfo(Object target) throws IntrospectionException { + Map props = (Map) propertyInfoCache.get(target.getClass()); + if (props == null) { + props = new HashMap(); + BeanInfo info = Introspector.getBeanInfo(target.getClass()); + PropertyDescriptor[] desc = info.getPropertyDescriptors(); + for ( int i = 0; i < desc.length; i++ ) { + PropertyDescriptor d = desc[i]; + PropertyTuple tup = new PropertyTuple(); + if (d.getReadMethod() != null && + d.getReadMethod().getParameterTypes().length == 0 && + d.getWriteMethod() != null && + d.getWriteMethod().getParameterTypes().length == 1) { + tup.name = d.getName(); + tup.getter = d.getReadMethod(); + tup.setter = d.getWriteMethod(); + props.put(tup.setter, tup); + } + } + propertyInfoCache.put(target.getClass(), props); + } + return props; + } + + public Object intercept(Object obj, + Method method, + Object[] args, + MethodProxy proxy) throws Throwable { + Class decClass = method.getDeclaringClass(); + if (decClass == indexAccessor.getDeclaringClass() ) { + Integer arg = (Integer) args[0]; + return targetFields[arg.intValue() - 1].invoke(target, null); + } else if (decClass == targetAccessor.getDeclaringClass() ) { + return target; + } else if (decClass == addListener.getDeclaringClass()) { + addListener(args[0]); + return null; + } else if (decClass == removeListenerMethod.getDeclaringClass()) { + removeListener(args[0]); + return null; + } else { + + PropertyTuple prop = (PropertyTuple) properties.get(method); + if (prop != null) { //we have a property change + Object old = prop.getter.invoke(target, null); + changes.firePropertyChange(prop.name, old, args[0]); + } + return method.invoke(target, args); + } + + + } + + + private void removeListener(Object object) { + changes.removePropertyChangeListener((PropertyChangeListener) object); + } + + private void addListener(Object object) { + changes.addPropertyChangeListener((PropertyChangeListener)object); + + } + + private static Method getAddListener() { + try { + return ChangeListener.class.getMethod("addPropertyChangeListener", new Class[] {PropertyChangeListener.class}); + } + catch ( Exception e ) { + throw new IllegalStateException( e ); + } + } + + + private static Method getRemoveListener() { + try { + return ChangeListener.class.getMethod("removePropertyChangeListener", new Class[] {PropertyChangeListener.class}); + } + catch ( Exception e ) { + throw new IllegalStateException( e ); + } + } + + + static class PropertyTuple { + String name; + Method setter; + Method getter; + } + +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ChangeListenerFactInterceptor.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java 2006-02-04 22:44:42 UTC (rev 2263) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ProxyGenerator.java 2006-02-05 05:25:39 UTC (rev 2264) @@ -8,18 +8,40 @@ import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.Factory; +/** + * Generates proxies for shadow facts, field access and property change listeners. + * Classes with final methods will not work too well (will not be able to call the final methods). + * + * Classes need to have a visible empty constructor for this to work (can be package protected). + * Classes that are final can also not be proxied. + * + * These are the limitations placed on by using objects in rules. + * + * However, the extractFieldMethodsInOrder method will work on any class. This provides an array + * of method objects which can be used to provide ordered "field" access to objects. This + * can be used in cases where the proxy will not work. + * + * @author Michael Neale + * + */ public class ProxyGenerator { //cache the generated classes, and lists of indexable "fields" on each pojo class - private static Map cache = new HashMap(); + static Map cache = new HashMap(); /** * Generate a proxy that adds in a field index accessor, and an accessor to get to the target. - * Shadow and non shadow options are available. + * Shadow and non shadow options are available etc. * + * @param pojo The end user object which is to be proxied. Must have empty constructor, be non final etc. + * @param shadow If true, accessible "fields" (indicated by "getters") will be shallow copied, and accessed when reading. + * @param propertyChangeListener If true, this will add in property change support. So all setters notify of changes. + * This can be used with the property change support in the rule engine. This option is mutually exclusive with shadow, + * as they are both ways to solve the same problem. + * * @throws IOException If unable to load the class data to proxy. */ - public static Object generateProxy(Object pojo, boolean shadow) throws IOException { + public static Object generateProxy(Object pojo, boolean shadow, boolean propertyChangeListener) throws IOException { Class cls = pojo.getClass(); GeneratedEntry holder = getEntryFor(cls); @@ -29,6 +51,8 @@ FactInterceptor interceptor; if (shadow) { interceptor = new ShadowedFactInterceptor(pojo, fieldMethods); + } else if (propertyChangeListener) { + interceptor = new ChangeListenerFactInterceptor(pojo, fieldMethods); } else { interceptor = new FactInterceptor(pojo, fieldMethods); } @@ -45,8 +69,10 @@ GeneratedEntry entry = (GeneratedEntry) cache.get(pojoClass); if (entry == null) { entry = new GeneratedEntry(); - entry.instanceFactory = createInstanceFactory(pojoClass); - entry.fieldMethods = calcFieldMethodsInOrder(pojoClass); + entry.instanceFactory = createInstanceFactory(pojoClass, new Class[] {FieldIndexAccessor.class, + TargetAccessor.class, + ChangeListener.class}); + entry.fieldMethods = extractFieldMethodsInOrder(pojoClass); cache.put(pojoClass, entry); } return entry; @@ -56,10 +82,10 @@ * Create a instance of the CGLib factory, which will then be used to quickly create new instances * in the future. */ - private static Factory createInstanceFactory(Class pojoClass) { + private static Factory createInstanceFactory(Class pojoClass, Class[] interfaces) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(pojoClass); - enhancer.setInterfaces(new Class[] {FieldIndexAccessor.class, TargetAccessor.class}); + enhancer.setInterfaces(interfaces); //just need some callback of the correct type to keep it happy, gets replaced when instantiating anyway. enhancer.setCallback(new FactInterceptor(null, null)); return (Factory) enhancer.create(); @@ -76,7 +102,7 @@ * * This uses ASM to work out the innards of the class. */ - public static Method[] calcFieldMethodsInOrder(Class pojoClass) throws IOException { + public static Method[] extractFieldMethodsInOrder(Class pojoClass) throws IOException { FieldOrderInspector ext = new FieldOrderInspector(pojoClass); return (Method[]) ext.getPropertyGetters().toArray(new Method[] {}); Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-04 22:44:42 UTC (rev 2263) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/util/proxy/ShadowedFactInterceptor.java 2006-02-05 05:25:39 UTC (rev 2264) @@ -58,10 +58,12 @@ MethodProxy proxy) throws Throwable { //this one is a little different... - if (method.getDeclaringClass() == indexAccessor.getDeclaringClass() ) { + Class methodClass = method.getDeclaringClass(); + + if (methodClass == indexAccessor.getDeclaringClass() ) { Integer arg = (Integer) args[0]; return values[arg.intValue() - 1]; - } else if (method.getDeclaringClass() == targetAccessor.getDeclaringClass() ) { + } else if (methodClass == targetAccessor.getDeclaringClass() ) { return target; } else { //check if method is in targetFields Added: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/Child.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/Child.java 2006-02-04 22:44:42 UTC (rev 2263) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/Child.java 2006-02-05 05:25:39 UTC (rev 2264) @@ -0,0 +1,34 @@ +package org.drools.util.proxy; + +import java.math.BigInteger; + +public class Child { + + private BigInteger nappies; + private String name; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public BigInteger getNappies() { + return nappies; + } + public void setNappies(BigInteger nappies) { + this.nappies = nappies; + } + + public Child(BigInteger nappies, + String name) { + this.nappies = nappies; + this.name = name; + } + + Child() {}; + + + + +} Property changes on: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/Child.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-04 22:44:42 UTC (rev 2263) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/util/proxy/ProxyGeneratorTest.java 2006-02-05 05:25:39 UTC (rev 2264) @@ -1,6 +1,11 @@ package org.drools.util.proxy; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.IOException; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; import junit.framework.TestCase; @@ -11,7 +16,7 @@ original.setAge(31); original.setName("michael"); - Person p = (Person) ProxyGenerator.generateProxy(original, false); + Person p = (Person) ProxyGenerator.generateProxy(original, false, false); standardTests( original, p ); @@ -27,7 +32,7 @@ original.setAge(31); original.setName("michael"); - Person p = (Person) ProxyGenerator.generateProxy(original, true); + Person p = (Person) ProxyGenerator.generateProxy(original, true, false); standardTests( original, p ); @@ -37,7 +42,59 @@ assertEquals("jo", original.getName()); } + + public void xxtestChangeListener() throws IOException { + Person original = new Person(); + original.setAge(31); + original.setName("michael"); + + Person p = (Person) ProxyGenerator.generateProxy(original, false, true); + standardTests( original, + p ); + + + //check that stuff is passed through (bypasses the proxy). + p.changeName("jo"); + assertEquals("jo", p.getName()); + assertEquals("jo", original.getName()); + + assertTrue(p instanceof ChangeListener); + ChangeListener cl = (ChangeListener) p; + + TestListener listener = new TestListener(); + cl.addPropertyChangeListener(listener); + + p.setAge(42); + assertEquals(42, p.getAge()); //just to make sure it actually worked + assertEquals(42, original.getAge()); + assertEquals(1, listener.events.size()); + PropertyChangeEvent event = (PropertyChangeEvent) listener.events.get(0); + assertEquals("age", event.getPropertyName()); + assertEquals(new Integer(31), event.getOldValue()); + assertEquals(new Integer(42), event.getNewValue()); + + + p.setName("chloe"); + assertEquals(2, listener.events.size()); + event = (PropertyChangeEvent) listener.events.get(1); + assertEquals("name", event.getPropertyName()); + assertEquals("jo", event.getOldValue()); + assertEquals("chloe", event.getNewValue()); + + } + + public void testOtherObject() throws Exception { + Person p = new Person(); + Object personProxy = ProxyGenerator.generateProxy(p, false, false); + + Child c = new Child(new BigInteger("321321321"), "Chloe Emma Neale"); + Child proxyChild = (Child) ProxyGenerator.generateProxy(c, true, false); + assertNotSame(proxyChild, c); + assertEquals(proxyChild.getName(), c.getName()); + } + + private void standardTests(Person original, Person p) { assertTrue(p instanceof FieldIndexAccessor); @@ -62,4 +119,41 @@ assertEquals(original, t.getTarget()); } + public void testPerf() throws Exception { + + Person o = new Person(); + o.setName("michael"); + o.setAge(31); + + Person p = (Person) ProxyGenerator.generateProxy(o, true, false); + + long start = System.currentTimeMillis(); + for (int i = 0; i < 100000; i++) { + String s = p.getName() + i; + } + System.out.println("Time taken proxy: " + (System.currentTimeMillis() - start)); + + start = System.currentTimeMillis(); + for (int i = 0; i < 100000; i++) { + String s = o.getName() + i; + } + System.out.println("Time taken native: " + (System.currentTimeMillis() - start)); + + + + + + + } + + static class TestListener implements PropertyChangeListener { + + List events = new ArrayList(); + + public void propertyChange(PropertyChangeEvent event) { + events.add(event); + } + + } + } |
Author: adamw Date: 2006-02-04 17:44:42 -0500 (Sat, 04 Feb 2006) New Revision: 2263 Added: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-faces-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-security-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-theme-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portlet-api-lib.jar branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml Removed: branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-portal.xml Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-bridge-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-common-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-core-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-format-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-portlet-lib.jar branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-server-lib.jar branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml branches/forge/adam/portal-extensions-2.2/forge-login-portlet/ branches/forge/adam/portal-extensions-2.2/forge-podcast/ branches/forge/adam/portal-extensions-2.2/forge-speller/.classpath branches/forge/adam/portal-extensions-2.2/forge-speller/.project branches/forge/adam/portal-extensions-2.2/forge-status/ branches/forge/adam/portal-extensions-2.2/forge-theme/maven.xml branches/forge/adam/portal-extensions-2.2/forge-theme/project.xml branches/forge/adam/portal-extensions-2.2/forge-timetracker/ branches/forge/adam/portal-extensions-2.2/maven.xml branches/forge/adam/portal-extensions-2.2/polls/ branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/polls-object.xml branches/forge/adam/portal-extensions-2.2/portal-default/maven.xml branches/forge/adam/portal-extensions-2.2/portal-default/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/layout/portal-renderSet.xml branches/forge/adam/portal-extensions-2.2/primates/ Log: http://jira.jboss.com/jira/browse/JBLAB-586 Something shows up. But not much works. Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-bridge-lib.jar =================================================================== (Binary files differ) Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-common-lib.jar =================================================================== (Binary files differ) Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-core-lib.jar =================================================================== (Binary files differ) Added: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-faces-lib.jar =================================================================== (Binary files differ) Property changes on: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-faces-lib.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-format-lib.jar =================================================================== (Binary files differ) Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-portlet-lib.jar =================================================================== (Binary files differ) Added: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-security-lib.jar =================================================================== (Binary files differ) Property changes on: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-security-lib.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-server-lib.jar =================================================================== (Binary files differ) Added: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-theme-lib.jar =================================================================== (Binary files differ) Property changes on: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portal-theme-lib.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portlet-api-lib.jar =================================================================== (Binary files differ) Property changes on: branches/forge/adam/portal-extensions-2.2/binaries/maven-repo-addons/jboss/jars/portlet-api-lib.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -12,6 +12,9 @@ </preference> </preferences> </instance> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> <instance> <instance-name>PrjBlogPortletInstance</instance-name> <component-ref>blog.BlogPortlet</component-ref> Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2006-02-04 22:44:42 UTC (rev 2263) @@ -53,7 +53,6 @@ import org.jboss.shotoku.ContentManager; import org.w3c.dom.Node; - /** * Common constants and functions for the forge. * @@ -120,6 +119,8 @@ * <code>LABS_PORTAL</code> - name of the portal where the labs page is. */ public final static String LABS_PORTAL = "default"; + + public final static String PROP_SHOTOKU_MAIN_DIRECTORY = "shotoku.main.directory"; private final static String MIME_TYPE_FILENAME = "mime.types"; @@ -256,7 +257,8 @@ String resource) { PortalContext portalCtx = request.getPortalContext(); String portalName = portalCtx - .getProperty("org.jboss.portal.property.name"); + .getProperty(PROP_SHOTOKU_MAIN_DIRECTORY); + return createRepoAccessPath(portalName, resource); } @@ -272,37 +274,7 @@ */ public static String getRequestParameter(JBossRenderRequest request, String paramName) { - // First trying to read it from the URL (this works, if it is not a - // render/ action request). - String URL = request.getURL(); - String paramValue; - if (URL != null) { - int paramStart = request.getURL().indexOf("&" + paramName + "="); - if (paramStart == -1) - paramStart = request.getURL().indexOf("?" + paramName + "="); - - if (paramStart != -1) { - // Skipping the <paramName>= - paramStart += paramName.length() + 2; - int paramEnd = request.getURL().substring(paramStart).indexOf( - '&'); - if (paramEnd == -1) - paramValue = URL.substring(paramStart); - else - paramValue = URL.substring(paramStart, paramStart - + paramEnd); - - return paramValue; - } - - return null; - } - - // If the paramter wasn't in the URL, trying to read it from the - // parameters and attributes - the paramter will be there, if - // it is a render/action request or if this has been set by an - // external filter. - paramValue = request.getParameters().get(paramName, null); + String paramValue = request.getParameters().get(paramName, null); if (paramValue == null) paramValue = (String) request.getAttribute(paramName); @@ -319,7 +291,8 @@ public static String getPortalName(PortletRequest request) { PortalContext portalCtx = request.getPortalContext(); String portalName = portalCtx - .getProperty("org.jboss.portal.property.name"); + .getProperty(PROP_SHOTOKU_MAIN_DIRECTORY); + return portalName; } @@ -418,7 +391,7 @@ * @return A link to the given portal page. */ public static String createPageLink(String portalName, String page) { - return "/portal/index.html?ctrl:id=page." + portalName + "." + page; + return "/portal/" + portalName + "/" + page; } /** @@ -443,9 +416,7 @@ * @return A link to the given portal page. */ public static String createWikiLink(String portalName, String page) { - return "/portal/index.html?ctrl:id=window." + portalName - + ".WikiPortletWindow&ctrl:type=action&page=" - + capitilizeFirstLetter(page); + return "/wiki/" + capitilizeFirstLetter(page); } /** Modified: branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2006-02-04 22:44:42 UTC (rev 2263) @@ -33,7 +33,7 @@ /** * Various helper methods for project-specific portlets. * - * @author adamw + * @author Adam Warski (ad...@as...) * @author Ryszard Kozmik */ public class ProjectsHelper { @@ -44,205 +44,204 @@ } - /** - * <code>PROJECT_ID</code> - name of the attribute under which the - * selected project's id can be found in a servlet response object. - */ - public final static String PROJECT_ID = "projectId"; - /** - * <code>LEVEL_ID</code> - name of the attribute under which the - * selected level's id can be found in a servlet response object. - */ - public final static String LEVEL_ID = "levelId"; - /** - * <code>PROJECT_NAME</code> - name of the attribute under which the - * selected project's name can be found in a servlet response object. - */ - public final static String PROJECT_NAME = "projectName"; - /** - * <code>PROJECT_URL_PARAM</code> - name of the paramter in the URL - * depicting the selected project. - */ - public final static String PROJECT_URL_PARAM = "project"; - - /** - * <code>DEFAULT_PROJECT</code> - name of the project to return if there - * is no project selected. - */ - private final static String DEFAULT_PROJECT = "default"; - - /** - * <code>projectsObjects</code> - portalName -> Projects object - */ - private static Map<String, Projects> projectsObjects; - - public final static String PROJECT_DESC = "project.xml"; - public final static String PROJECTS_DESC = "projects.xml"; - - protected final static String LEVELS_DESC = "levels.xml"; - protected final static String PAGES_DESC = "pages.xml"; - protected final static String JEMS_DESC = "jems.xml"; - protected final static String CATEGORIES_DESC = "categories.xml"; - protected final static String SERVICES_DESC = "services.xml"; - protected final static String DOWNLOADS_DESC = "downloads.xml"; - protected final static String DOWNLOADCOUNTER_DESC = "counter.xml"; - protected final static String DOWNLOADCOUNTERMAIN_DESC = "counters.xml"; - protected final static String POLLS_DESC = "polls.xml"; - protected final static String POLL_DESC = "poll.xml"; - - /** - * <code>MEMBERS_DIRECTORY</code> - base repository directory in which - * members store their files. - */ - public final static String MEMBERS_DIR = "members"; - public final static String DOWNLOADS_DIR = "downloads"; - public final static String BLOG_DIR = "blog"; - public final static String FREEZONE_DIR = "freezone"; - - static { - projectsObjects = new HashMap<String, Projects>(); - } - - /** - * Gets an instance of the Projects object for the given portal. - * - * @param portalName - * Name of the portal. - * @return An appropriate instance of class Projects. - */ - public static synchronized Projects getProjects(String portalName) { - Projects projects = (Projects) projectsObjects.get(portalName); - if (projects == null) { - String suffix = "/" + portalName + "/" + MEMBERS_DIR; - projects = new Projects(ForgeHelper.getContentManager(suffix), - portalName); - projectsObjects.put(portalName, projects); - } - - return projects; - } - - /** - * Equivalent to <code>getSelectedProjectId(request, false)</code>. - * @param request - * A request object from which the selected project name will be - * read. - * @return Selected project's id, or null, if no project is selected (never - * the default project, as it cannot be selected). - */ - public static String getSelectedProjectId(JBossRenderRequest request) { - return getSelectedProjectId(request, false); - } - - /** - * @param request - * A request object from which the selected project name will be - * read. - * @param withDefault - * True if default project name should be returned if no project - * is selected. False if null should be returned in such case. - * @return Selected project's id, or the default project's id/ null, depending - * on <code>withDefault</code>, if no project is selected. - */ - public static String getSelectedProjectId(JBossRenderRequest request, - boolean withDefault) { - String projectId = ForgeHelper.getRequestParameter(request, - PROJECT_URL_PARAM); - - if ((withDefault) && (projectId == null)) { - projectId = DEFAULT_PROJECT; - } else if ((!withDefault) && (DEFAULT_PROJECT.equals(projectId))) { - projectId = null; - } else if ((!DEFAULT_PROJECT.equals(projectId)) && - (getProjects(ForgeHelper.getPortalName(request)).getProjectContext( - new RenderRequestPermissionsChecker(request), projectId) == null)) { - // No project context --> project does not exist. - projectId = null; - } - - return projectId; - } - - /** - * Equivalent to <code>getSelectedProjectId(request, false)</code>. - * @param request - * A request object from which the selected project name will be - * read. - * @return Selected project's id, or null, if no project is selected (never - * the default project, as it cannot be selected). - */ - public static String getSelectedProjectId(JBossActionRequest request) { - return getSelectedProjectId(request, false); - } - - /** - * @param request - * A request object from which the selected project name will be - * read. - * @param withDefault - * True if default project name should be returned if no project - * is selected. False if null should be returned in such case. - * @return Selected project's id, or the default project's id/ null, depending - * on <code>withDefault</code>, if no project is selected. - */ - public static String getSelectedProjectId(JBossActionRequest request, - boolean withDefault) { - String projectId = request.getParameter(PROJECT_URL_PARAM); - - if ((withDefault) && (projectId == null)) { - projectId = DEFAULT_PROJECT; - } else if ((!withDefault) && (DEFAULT_PROJECT.equals(projectId))) { - projectId = null; - } else if ((!DEFAULT_PROJECT.equals(projectId)) && - (getProjects(ForgeHelper.getPortalName(request)).getProjectContext( - new ActionRequestPermissionsChecker(request), projectId) == null)) { - // No project context --> project does not exist. - projectId = null; - } - - return projectId; - } - - /** - * Prepares a request object for generating a JSP. PROJECT_NAME and - * PROJECT_ID attributes are set. - * - * @param request - * Request to prepare. - */ - public static void prepareRequest(JBossRenderRequest request) { - ForgeHelper.prepareRequest(request); - String projectId = getSelectedProjectId(request); - request.setAttribute(PROJECT_ID, projectId); - request.setAttribute(LEVEL_ID, getProjects( - ForgeHelper.getPortalName(request)).getProjectLevel(projectId)); - } - - /** - * Creates a link to a freezone page basing on the given parameters. - * - * @param portalName - * Name of the portal. - * @param projectId - * Id of the project. - * @param page - * Page to link to. - * @return A link to the given page. - */ - public static String createFreezonePageLink(String portalName, String projectId, - String page) { - return ForgeHelper.FREEZONE_PREPEND + projectId + "/" + page; - } - - /** - * Creates a link to a portal page based on the given parameters. - * @param portalName Name of the portal. - * @param projectId Id of the project for which the page should be displayed. - * @param page Page to display. - * @return A link to the given portal page. - */ - public static String createPageLink(String portalName, String projectId, String page) { - return "/portal/index.html?ctrl:id=page." + portalName - + "." + page + "&project=" + projectId; - } + /** + * <code>PROJECT_ID</code> - name of the attribute under which the + * selected project's id can be found in a servlet response object. + */ + public final static String PROJECT_ID = "projectId"; + /** + * <code>LEVEL_ID</code> - name of the attribute under which the + * selected level's id can be found in a servlet response object. + */ + public final static String LEVEL_ID = "levelId"; + /** + * <code>PROJECT_NAME</code> - name of the attribute under which the + * selected project's name can be found in a servlet response object. + */ + public final static String PROJECT_NAME = "projectName"; + /** + * <code>PROJECT_URL_PARAM</code> - name of the paramter in the URL + * depicting the selected project. + */ + public final static String PROJECT_URL_PARAM = "project"; + + /** + * <code>DEFAULT_PROJECT</code> - name of the project to return if there + * is no project selected. + */ + private final static String DEFAULT_PROJECT = "default"; + + /** + * <code>projectsObjects</code> - portalName -> Projects object + */ + private static Map<String, Projects> projectsObjects; + + public final static String PROJECT_DESC = "project.xml"; + public final static String PROJECTS_DESC = "projects.xml"; + + protected final static String LEVELS_DESC = "levels.xml"; + protected final static String PAGES_DESC = "pages.xml"; + protected final static String JEMS_DESC = "jems.xml"; + protected final static String CATEGORIES_DESC = "categories.xml"; + protected final static String SERVICES_DESC = "services.xml"; + protected final static String DOWNLOADS_DESC = "downloads.xml"; + protected final static String DOWNLOADCOUNTER_DESC = "counter.xml"; + protected final static String DOWNLOADCOUNTERMAIN_DESC = "counters.xml"; + protected final static String POLLS_DESC = "polls.xml"; + protected final static String POLL_DESC = "poll.xml"; + + /** + * <code>MEMBERS_DIRECTORY</code> - base repository directory in which + * members store their files. + */ + public final static String MEMBERS_DIR = "members"; + public final static String DOWNLOADS_DIR = "downloads"; + public final static String BLOG_DIR = "blog"; + public final static String FREEZONE_DIR = "freezone"; + + static { + projectsObjects = new HashMap<String, Projects>(); + } + + /** + * Gets an instance of the Projects object for the given portal. + * + * @param portalName + * Name of the portal. + * @return An appropriate instance of class Projects. + */ + public static synchronized Projects getProjects(String portalName) { + Projects projects = (Projects) projectsObjects.get(portalName); + if (projects == null) { + String suffix = "/" + portalName + "/" + MEMBERS_DIR; + projects = new Projects(ForgeHelper.getContentManager(suffix), + portalName); + projectsObjects.put(portalName, projects); + } + + return projects; + } + + /** + * Equivalent to <code>getSelectedProjectId(request, false)</code>. + * @param request + * A request object from which the selected project name will be + * read. + * @return Selected project's id, or null, if no project is selected (never + * the default project, as it cannot be selected). + */ + public static String getSelectedProjectId(JBossRenderRequest request) { + return getSelectedProjectId(request, false); + } + + /** + * @param request + * A request object from which the selected project name will be + * read. + * @param withDefault + * True if default project name should be returned if no project + * is selected. False if null should be returned in such case. + * @return Selected project's id, or the default project's id/ null, depending + * on <code>withDefault</code>, if no project is selected. + */ + public static String getSelectedProjectId(JBossRenderRequest request, + boolean withDefault) { + String projectId = ForgeHelper.getRequestParameter(request, + PROJECT_URL_PARAM); + + if ((withDefault) && (projectId == null)) { + projectId = DEFAULT_PROJECT; + } else if ((!withDefault) && (DEFAULT_PROJECT.equals(projectId))) { + projectId = null; + } else if ((!DEFAULT_PROJECT.equals(projectId)) && + (getProjects(ForgeHelper.getPortalName(request)).getProjectContext( + new RenderRequestPermissionsChecker(request), projectId) == null)) { + // No project context --> project does not exist. + projectId = null; + } + + return projectId; + } + + /** + * Equivalent to <code>getSelectedProjectId(request, false)</code>. + * @param request + * A request object from which the selected project name will be + * read. + * @return Selected project's id, or null, if no project is selected (never + * the default project, as it cannot be selected). + */ + public static String getSelectedProjectId(JBossActionRequest request) { + return getSelectedProjectId(request, false); + } + + /** + * @param request + * A request object from which the selected project name will be + * read. + * @param withDefault + * True if default project name should be returned if no project + * is selected. False if null should be returned in such case. + * @return Selected project's id, or the default project's id/ null, depending + * on <code>withDefault</code>, if no project is selected. + */ + public static String getSelectedProjectId(JBossActionRequest request, + boolean withDefault) { + String projectId = request.getParameter(PROJECT_URL_PARAM); + + if ((withDefault) && (projectId == null)) { + projectId = DEFAULT_PROJECT; + } else if ((!withDefault) && (DEFAULT_PROJECT.equals(projectId))) { + projectId = null; + } else if ((!DEFAULT_PROJECT.equals(projectId)) && + (getProjects(ForgeHelper.getPortalName(request)).getProjectContext( + new ActionRequestPermissionsChecker(request), projectId) == null)) { + // No project context --> project does not exist. + projectId = null; + } + + return projectId; + } + + /** + * Prepares a request object for generating a JSP. PROJECT_NAME and + * PROJECT_ID attributes are set. + * + * @param request + * Request to prepare. + */ + public static void prepareRequest(JBossRenderRequest request) { + ForgeHelper.prepareRequest(request); + String projectId = getSelectedProjectId(request); + request.setAttribute(PROJECT_ID, projectId); + request.setAttribute(LEVEL_ID, getProjects( + ForgeHelper.getPortalName(request)).getProjectLevel(projectId)); + } + + /** + * Creates a link to a freezone page basing on the given parameters. + * + * @param portalName + * Name of the portal. + * @param projectId + * Id of the project. + * @param page + * Page to link to. + * @return A link to the given page. + */ + public static String createFreezonePageLink(String portalName, String projectId, + String page) { + return ForgeHelper.FREEZONE_PREPEND + projectId + "/" + page; + } + + /** + * Creates a link to a portal page based on the given parameters. + * @param portalName Name of the portal. + * @param projectId Id of the project for which the page should be displayed. + * @param page Page to display. + * @return A link to the given portal page. + */ + public static String createPageLink(String portalName, String projectId, String page) { + return "/portal/" + portalName + "/" + page + "&project=" + projectId; + } } Modified: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java 2006-02-04 22:44:42 UTC (rev 2263) @@ -57,7 +57,10 @@ static PortletURL createRenderURL() { Object response = getExternalContext().getResponse(); if (response instanceof JBossActionResponse) { - return ((JBossActionResponse) response).createRenderURL(); + //TODO + //New "feature" of portal 2.2 ... + //return ((JBossActionResponse) response).createRenderURL(); + return null; } else if (response instanceof JBossRenderResponse) { return ((JBossRenderResponse) response).createRenderURL(); } else return null; Modified: branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-ear/src/META-INF/application.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -35,11 +35,6 @@ </module> <module> <web> - <web-uri>federation-register.war</web-uri> - </web> - </module> - <module> - <web> <web-uri>feeds.war</web-uri> </web> </module> @@ -90,11 +85,6 @@ </module> <module> <web> - <web-uri>portal-federation.war</web-uri> - </web> - </module> - <module> - <web> <web-uri>jbossForgeLayout.war</web-uri> </web> </module> Modified: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2006-02-04 22:44:42 UTC (rev 2263) @@ -10,7 +10,6 @@ import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; -import org.jboss.shotoku.aop.NodeInject; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.w3c.dom.Document; Modified: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-02-04 22:44:42 UTC (rev 2263) @@ -109,8 +109,17 @@ String portalName = ForgeHelper.getPortalName(request); // Getting the requested path. - String reqPath = request - .getParameter(CoreConstants.REQ_ACTION_PARAM_PATH); + //TODO + //Portal 2.2 new "feature" ... + //String reqPath = request + // .getParameter(CoreConstants.REQ_ACTION_PARAM_PATH); + String reqPath = request.getAttribute("nav-url").toString(); + + System.out.println("FREEZONE"); + System.out.println("---------"); + System.out.println(" " + CoreConstants.REQ_ATT_CONTEXT_PATH); + System.out.println(" " + CoreConstants.REQ_ATT_SERVLET_PATH); + System.out.println(" " + reqPath); // For "root" requests, redirecting to a default page. if ((reqPath == null) || ("".equals(reqPath)) || ("/".equals(reqPath))) { Modified: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -6,6 +6,9 @@ <instance-name>PrjFreezonePortletInstance</instance-name> <component-ref>prj-freezone.PrjFreezonePortlet</component-ref> </instance> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> <instance> <instance-name>FreezoneDefaultPagePortletInstance</instance-name> <component-ref>prj-freezone.PrjFreezonePortlet</component-ref> @@ -16,6 +19,9 @@ </preference> </preferences> </instance> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> <instance> <instance-name>FreezoneRightPanelPortletInstance</instance-name> <component-ref>prj-freezone.PrjFreezonePortlet</component-ref> Property changes on: branches/forge/adam/portal-extensions-2.2/forge-login-portlet ___________________________________________________________________ Name: svn:ignore - target + target .classpath .project Property changes on: branches/forge/adam/portal-extensions-2.2/forge-podcast ___________________________________________________________________ Name: svn:ignore - target + target .classpath .project Modified: branches/forge/adam/portal-extensions-2.2/forge-speller/.classpath =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-speller/.classpath 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-speller/.classpath 2006-02-04 22:44:42 UTC (rev 2263) @@ -5,10 +5,6 @@ </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/javasvn.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/jsch.jar"> - </classpathentry> <classpathentry kind="var" path="MAVEN_REPO/javax.servlet/jars/servlet-api-2.2.jar"> </classpathentry> <classpathentry kind="var" path="MAVEN_REPO/jboss-forge/jars/forge-common-1.0.jar"> Modified: branches/forge/adam/portal-extensions-2.2/forge-speller/.project =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-speller/.project 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-speller/.project 2006-02-04 22:44:42 UTC (rev 2263) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <projectDescription> - <name>ads-portlet</name> + <name>speller</name> <comment> </comment> <projects> Property changes on: branches/forge/adam/portal-extensions-2.2/forge-status ___________________________________________________________________ Name: svn:ignore - target + target .classpath .project Modified: branches/forge/adam/portal-extensions-2.2/forge-theme/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-theme/maven.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-theme/maven.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -5,12 +5,6 @@ --> <project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util"> <goal name="prj-install"> - <attainGoal name="jar" /> - <ant:copy todir="${local.deploy.dir}/jboss-portal.sar/lib" overwrite="yes"> - <ant:fileset dir="target"> - <ant:include name="*.jar" /> - </ant:fileset> - </ant:copy> </goal> <goal name="all"> @@ -22,10 +16,15 @@ </goal> <goal name="build"> - <attainGoal name="jar" /> + <!--<attainGoal name="jar" />--> </goal> <goal name="deploy"> + <!--<ant:copy todir="${local.deploy.dir}/jboss-portal.sar/lib" overwrite="yes"> + <ant:fileset dir="target"> + <ant:include name="*.jar" /> + </ant:fileset> + </ant:copy>--> <ant:copy todir="../${forge.ear.dir}/target/${forge.ear.name}" overwrite="true"> <ant:fileset dir="."> <ant:include name="jbossForgeLayout.war/**" /> Modified: branches/forge/adam/portal-extensions-2.2/forge-theme/project.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-theme/project.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/forge-theme/project.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -37,13 +37,6 @@ <artifactId>javax.servlet</artifactId> <version>1.0</version> <jar>javax.servlet.jar</jar> - </dependency> - - <!--<dependency> - <groupId>tmate</groupId> - <artifactId>jsch</artifactId> - <version>1.0</version> - <jar>jsch.jar</jar> - </dependency>--> + </dependency> </dependencies> </project> Property changes on: branches/forge/adam/portal-extensions-2.2/forge-timetracker ___________________________________________________________________ Name: svn:ignore - target .settings .project + target .settings .project .classpath Modified: branches/forge/adam/portal-extensions-2.2/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/maven.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/maven.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -157,10 +157,6 @@ <ant:fileset dir="jboss-as-binaries/to-copy" /> </ant:copy> - <ant:copy todir="${local.server.dir}" overwrite="true"> - <ant:fileset dir="portal-binaries/to-copy-head" /> - </ant:copy> - <ant:copy todir="${local.deploy.dir}" overwrite="true"> <ant:fileset dir="portal-binaries/to-copy" /> </ant:copy> Property changes on: branches/forge/adam/portal-extensions-2.2/polls ___________________________________________________________________ Name: svn:ignore - target + target .classpath .project Modified: branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/polls-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/polls-object.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/polls-object.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -6,6 +6,9 @@ <instance-name>PollsPortletInstance</instance-name> <component-ref>polls.PollsPortlet</component-ref> </instance> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> <instance> <instance-name>PollsPortletInstanceRandom</instance-name> <component-ref>polls.PollsPortlet</component-ref> Modified: branches/forge/adam/portal-extensions-2.2/portal-default/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/portal-default/maven.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/portal-default/maven.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -20,6 +20,7 @@ <goal name="deploy"> <ant:delete file="${local.deploy.dir}/jboss-portal.sar/conf/data/default-object.xml" /> + <ant:delete dir="${local.deploy.dir}/jboss-portal.sar/portal-samples.war" /> <attainGoal name="prj-war-deploy" /> </goal> Added: branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-object.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -0,0 +1,635 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <parent-ref /> + <if-exists>overwrite</if-exists> + <portal> + <portal-name>default</portal-name> + <properties> + <!-- + | Set the layout for the default portal, see also portal-layouts.xml. + --> + <property> + <name>layout.id</name> + <value>generic</value> + </property> + <!-- + | Set the theme for the default portal, see also portal-themes.xml. + --> + <property> + <name>theme.id</name> + <value>Nphalanx</value> + </property> + <!-- + | Set the default render set name (used by the render tag in layouts), see also portal-renderSet.xml + --> + <property> + <name>theme.renderSetId</name> + <value>divRenderer</value> + </property> + <!-- + | Set the default strategy name (used by the strategy interceptor), see also portal-strategies.xml + --> + <property> + <name>layout.strategyId</name> + <value>maximizedRegion</value> + </property> + <!-- + | The default page name, if the property is not explicited then the default page name is "default" + --> + <property> + <name>portal.defaultObjectName</name> + <value>default</value> + </property> + + <!-- Old portal theme properties --> + <!--<property> + <name>org.jboss.portal.property.layout</name> + <value>JBossForge</value> + </property> + <property> + <name>org.jboss.portal.property.renderSet</name> + <value>jbfRenderer</value> + </property>--> + <!-- set the default strategy name (used by the strategy interceptor) --> + <!-- see also portal-strategies.xml --> + <!--<property> + <name>org.jboss.portal.property.strategy</name> + <value>default</value> + </property>--> + + <!-- Old portal request handler --> + <!-- Set the default window for request of the type /a/b/c --> + <property> + <name>org.jboss.portal.property.action</name> + <value>FreezonePortletWindowDefaultFreezone</value> + </property> + + <!-- Labs properties --> + <property> + <name>org.jboss.portlet.blog.mainportlet</name> + <value>yes</value> + </property> + <property> + <name>org.jboss.portlet.blog.specialpage</name> + <value>no</value> + </property> + <property> + <name>shotoku.main.directory</name> + <value>default</value> + </property> + <property> + <name>wikiPage</name> + <value>default</value> + </property> + </properties> + <supported-modes> + <mode>view</mode> + <mode>edit</mode> + <mode>help</mode> + </supported-modes> + <supported-window-states> + <window-state>normal</window-state> + <window-state>minimized</window-state> + <window-state>maximized</window-state> + </supported-window-states> + <page> + <page-name>default</page-name> + <window> + <window-name> + FreezonePortletWindowDefaultDefault + </window-name> + <instance-ref> + FreezoneDefaultPagePortletInstance + </instance-ref> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name> + PodcastPortletWindowDefaultDefault + </window-name> + <instance-ref>PodcastPortletInstance</instance-ref> + <region>center</region> + <height>1</height> + </window> + <window> + <window-name> + PrimatesPortletWindowDefaultDefault + </window-name> + <instance-ref>PrimatesPortletInstance</instance-ref> + <region>center</region> + <height>1</height> + </window> + <window> + <window-name> + BlogPortletWindowDefaultDefault + </window-name> + <instance-ref>BlogPortletInstance</instance-ref> + <region>center</region> + <height>2</height> + </window> + <window> + <window-name> + NavigationPortletWindowDefaultDefault + </window-name> + <instance-ref> + NavigationPortletInstance + </instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name> + AdsPortletWindowDefaultDefault + </window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name> + PollsPortletWindowDefaultRandom + </window-name> + <instance-ref> + PollsPortletInstanceRandom + </instance-ref> + <region>right</region> + <height>0</height> + </window> + <window> + <window-name> + FreezonePortletWindowDefaultRight + </window-name> + <instance-ref> + FreezoneRightPanelPortletInstance + </instance-ref> + <region>right</region> + <height>1</height> + </window> + </page> + </portal> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <!-- login page --> + <page-name>login</page-name> + <window> + <window-name>LoginWindow</window-name> + <instance-ref>LoginInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name> + NavigationPortletWindowDefaultLogin + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultLogin</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <!-- timetracker page --> + <page> + <page-name>TTS</page-name> + <window> + <window-name>TimeTrackerWindow</window-name> + <instance-ref>TimetrackerPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name> + NavigationPortletWindowDefaultTTS + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultTTS</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>softwaremap</page-name> + + <window> + <window-name> + NavigationPortletWindowDefaultMap + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultMap</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name>MapWindowDefaultMap</window-name> + <instance-ref>MapPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>wiki</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultWiki + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultWiki</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name>WikiPortletWindow</window-name> + <instance-ref>WikiPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>admin</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultAdmin + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>RolePortletWindowDefaultAdmin</window-name> + <instance-ref>RolePortletInstance</instance-ref> + <region>center</region> + <height>2</height> + </window> + <window> + <window-name>UserPortletWindowDefaultAdmin</window-name> + <instance-ref>UserPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name> + ManagementPortletWindowDefaultAdmin + </window-name> + <instance-ref>ManagementPortletInstance</instance-ref> + <region>center</region> + <height>1</height> + </window> + <security-constraint> + <policy-permission> + <role-name>Admin</role-name> + <action-name>view</action-name> + </policy-permission> + </security-constraint> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>info</page-name> + + <window> + <window-name> + NavigationPortletWindowDefaultInfo + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultInfo</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + + <window> + <window-name> + PrjInfoPortletWindowDefaultInfo + </window-name> + <instance-ref>PrjInfoPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name>PollsPortletWindowInfo</window-name> + <instance-ref>PollsPortletInstance</instance-ref> + <region>right</region> + <height>1</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>blog</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultBlog + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultBlog</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + + <window> + <window-name> + PrjBlogPortletWindowDefaultBlog + </window-name> + <instance-ref>PrjBlogPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>downloads</page-name> + + <window> + <window-name> + NavigationPortletWindowDefaultDownloads + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name> + AdsPortletWindowDefaultDownloads + </window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name> + PrjDownloadsPortletWindowDefaultDownloads + </window-name> + <instance-ref>PrjDownloadsPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name> + DownloadCounterPortletWindowDefaultDownloads + </window-name> + <instance-ref> + DownloadCounterPortletInstance + </instance-ref> + <region>center</region> + <height>1</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>con</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultCon + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultCon</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name>ConPortletWindowDefault</window-name> + <instance-ref>ConPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>feeds</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultFeeds + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultFeeds</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + + <window> + <window-name>FeedsPortletWindowDefault</window-name> + <instance-ref>FeedsPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>freezone</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultFreezone + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name> + AdsPortletWindowDefaultFreezone + </window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + + <window> + <window-name> + FreezonePortletWindowDefaultFreezone + </window-name> + <instance-ref>PrjFreezonePortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <!--<deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>forgeforums</page-name> + + <window> + <window-name>NavigationPortletWindowDefaultForums</window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultForums</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name>ForumsPortletWindowDefaultForums</window-name> + <instance-ref>ForumsPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + + </page> + </deployment>--> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>status</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultStatus + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name>AdsPortletWindowDefaultStatus</window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name> + StatusPortletWindowDefaultStatus + </window-name> + <instance-ref>StatusPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>overwrite</if-exists> + <parent-ref>default</parent-ref> + <page> + <page-name>podcast</page-name> + <window> + <window-name> + NavigationPortletWindowDefaultPodcast + </window-name> + <instance-ref>NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + </window> + <window> + <window-name> + AdsPortletWindowDefaultPodcast + </window-name> + <instance-ref>AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + </window> + <window> + <window-name> + PodcastPortletWindowDefaultPodcast + </window-name> + <instance-ref>PodcastPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </deployment> + <deployment> + <if-exists>keep</if-exists> + <instance> + <instance-name>ManagementPortletInstance</instance-name> + <component-ref>portal.ManagementPortlet</component-ref> + <security-constraint> + <policy-permission> + <role-name>Admin</role-name> + <action-name>view</action-name> + </policy-permission> + </security-constraint> + </instance> + </deployment> + <deployment> + <if-exists>keep</if-exists> + <instance> + <instance-name>UserPortletInstance</instance-name> + <component-ref>portal.UserPortlet</component-ref> + </instance> + </deployment> + <deployment> + <if-exists>keep</if-exists> + <instance> + <instance-name>RolePortletInstance</instance-name> + <component-ref>portal.RolePortlet</component-ref> + </instance> + </deployment> +</deployments> Deleted: branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-portal.xml 2006-02-04 18:54:12 UTC (rev 2262) +++ branches/forge/adam/portal-extensions-2.2/portal-default/src/web/WEB-INF/default-portal.xml 2006-02-04 22:44:42 UTC (rev 2263) @@ -1,518 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - JBoss, the OpenSource J2EE webOS - Distributable under LGPL license. - See terms of license at gnu.org. - --> -<portal> - <portal-name>default</portal-name> - <supported-modes> - <mode>view</mode> - <mode>edit</mode> - <mode>help</mode> - </supported-modes> - <supported-window-states> - <window-state>normal</window-state> - <window-state>minimized</window-state> - <window-state>maximized</window-state> - </supported-window-states> - <properties> - <property> - <name>org.jboss.portal.property.layout</name> - <value>JBossForge</value> - </property> - <property> - <name>org.jboss.portal.property.renderSet</name> - <value>jbfRenderer</value> - </property> - <!-- Set the default window for request of the type /a/b/c --> - <property> - <name>org.jboss.portal.property.action</name> - <value>FreezonePortletWindowDefaultFreezone</value> - </property> - <!-- set the default strategy name (used by the strategy interceptor) --> - <!-- see also portal-strategies.xml --> - <property> - <name>org.jboss.portal.property.strategy</name> - <value>default</value> - </property> - <property> - <name>org.jboss.portlet.blog.mainportlet</name> - <value>yes</value> - </property> - <property> - <name>org.jboss.portlet.blog.specialpage</name> - <value>no</value> - </property> - <property> - <name>wikiPage</name> - <value>default</value> - </property> - </properties> - <pages> - <default-page>default</default-page> - <page> - <page-name>default</page-name> - <window> - <window-name>FreezonePortletWindowDefaultDefault</window-name> - <instance-ref>prj-freezone.PrjFreezonePortlet.FreezoneDefaultPagePortletInstance</instance-ref> - <default>true</default> - <region>center</region> - <height>0</height> - </window> - <window> - <window-name>PodcastPortletWindowDefaultDefault</window-name> - <instance-ref>podcast.PodcastPortlet.PodcastPortletInstance</instance-ref> - <region>center</region> - <height>1</height> - <window-state>normal</window-state> - </window> - <window> - <window-name>PrimatesPortletWindowDefaultDefault</window-name> - <instance-ref>primates.PrimatesPortlet.PrimatesPortletInstance</instance-ref> - <region>center</region> - <height>1</height> - <window-state>normal</window-state> - </window> - <window> - <window-name>BlogPortletWindowDefaultDefault</window-name> - <instance-ref>blog.BlogPortlet.BlogPortletInstance</instance-ref> - <default>true</default> - <region>center</region> - <height>2</height> - </window> - <window> - <window-name>NavigationPortletWindowDefaultDefault</window-name> - <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> - <region>left</region> - <height>0</height> - <window-state>normal</window-state> - </window> - <window> - <window-name>AdsPortletWindowDefaultDefault</window-name> - <instance-ref>ads.AdsPortlet.AdsPortletInstance</instance-ref> - <region>left</region> - <height>2</height> - <window-state>normal</window-state> - </window> - <window> - <window-name>PollsPortletWindowDefaultRandom</window-name> - <instance-ref>polls.PollsPortlet.PollsPortletInstanceRandom</instance-ref> - <region>right</region> - <height>0</height> - <window-state>normal</window-state> - </window> - <window> - <window-name>FreezonePortletWindowDefaultRight</window-name> - <instance-ref>prj-freezone.PrjFreezonePortlet.FreezoneRightPanelPortletInstance</instance-ref> - <default>true</default> - <region>right</region> - <height>1</height> - </window> - - </page> - - <!-- login page --> - <page> - <page-name>login</page-name> - <window> - <window-name>LoginWindow</window-name> - <instance-ref>forgeLogin.Login.LoginInstance</instance-ref> - <default>true</default> - <region>center</region> - <height>0</height> - </window> - <window> - <window-name>NavigationPortletWindowDefaultLogin</window-name> - <instance-ref>navigation.NavigationPortlet... [truncated message content] |
Author: adamw Date: 2006-02-04 13:54:12 -0500 (Sat, 04 Feb 2006) New Revision: 2262 Added: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/fedreg-object.xml branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/ads-object.xml branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/con-object.xml branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/feeds-object.xml branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/downloads-object.xml branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/login-object.xml branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/map-object.xml branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/navigation-object.xml branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/podcast-object.xml branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/prj-downloads-object.xml branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/prj-info-object.xml branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-web.xml branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/status-object.xml branches/forge/adam/portal-extensions-2.2/forge-wiki/src/web/WEB-INF/wiki-object.xml branches/forge/adam/portal-extensions-2.2/jbosswiki/forge-wiki/src/web/WEB-INF/wiki-object.xml branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/polls-object.xml branches/forge/adam/portal-extensions-2.2/primates/src/web/WEB-INF/primates-object.xml Removed: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/forge-wiki/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/forge-wiki/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/forge-wiki/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/jbosswiki/forge-wiki/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/jbosswiki/forge-wiki/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/jbosswiki/forge-wiki/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/polls/src/web/WEB-INF/portlet-instances.xml branches/forge/adam/portal-extensions-2.2/portal-default/src/java/ branches/forge/adam/portal-extensions-2.2/primates/src/web/WEB-INF/jboss-portlet.xml branches/forge/adam/portal-extensions-2.2/primates/src/web/WEB-INF/jboss-service.xml branches/forge/adam/portal-extensions-2.2/primates/src/web/WEB-INF/portlet-instances.xml Modified: branches/forge/adam/portal-extensions-2.2/federation-register/maven.xml branches/forge/adam/portal-extensions-2.2/forge-forums/maven.xml branches/forge/adam/portal-extensions-2.2/forge-login/to-copy/login-config.xml branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml branches/forge/adam/portal-extensions-2.2/forge-timetracker/ branches/forge/adam/portal-extensions-2.2/portal-default/maven.xml branches/forge/adam/portal-extensions-2.2/portal-federation/maven.xml Log: http://jira.jboss.com/jira/browse/JBLAB-586 XMLs Modified: branches/forge/adam/portal-extensions-2.2/federation-register/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/federation-register/maven.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/federation-register/maven.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -7,18 +7,18 @@ <!-- Default war-project goals --> <goal name="all"> - <attainGoal name="prj-all" /> + <!--<attainGoal name="prj-all" />--> </goal> <goal name="build"> - <attainGoal name="prj-war-build" /> + <!--<attainGoal name="prj-war-build" />--> </goal> <goal name="deploy"> - <attainGoal name="prj-war-deploy" /> + <!--<attainGoal name="prj-war-deploy" />--> </goal> <goal name="clean"> - <attainGoal name="prj-clean" /> + <!--<attainGoal name="prj-clean" />--> </goal> </project> Added: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/fedreg-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/fedreg-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/fedreg-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>FedRegPortletInstance</instance-name> + <component-ref>fed-reg.FedRegPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>FedRegPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Deleted: branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/federation-register/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>FedRegPortletInstance</instance-name> - <component-ref>FedRegPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/ads-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/ads-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/ads-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>AdsPortletInstance</instance-name> + <component-ref>ads.AdsPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>AdsPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> Deleted: branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,2 +0,0 @@ -<server> -</server> Deleted: branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-ads/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>AdsPortletInstance</instance-name> - <component-ref>AdsPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/blog-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>BlogPortletInstance</instance-name> + <component-ref>blog.BlogPortlet</component-ref> + <preferences> + <preference> + <name>jsp</name> + <value>/blog/blog.jsp</value> + </preference> + </preferences> + </instance> + <instance> + <instance-name>PrjBlogPortletInstance</instance-name> + <component-ref>blog.BlogPortlet</component-ref> + <preferences> + <preference> + <name>jsp</name> + <value>/prj-blog/blog.jsp</value> + </preference> + </preferences> + </instance> + </deployment> +</deployments> Deleted: branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>BlogPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> Deleted: branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,2 +0,0 @@ -<server> -</server> Deleted: branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-blog/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,23 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>BlogPortletInstance</instance-name> - <component-ref>BlogPortlet</component-ref> - <preferences> - <preference> - <name>jsp</name> - <value>/blog/blog.jsp</value> - </preference> - </preferences> - </instance> - <instance> - <instance-name>PrjBlogPortletInstance</instance-name> - <component-ref>BlogPortlet</component-ref> - <preferences> - <preference> - <name>jsp</name> - <value>/prj-blog/blog.jsp</value> - </preference> - </preferences> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/con-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/con-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/con-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>ConPortletInstance</instance-name> + <component-ref>con.ConPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,23 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>ConPortlet</portlet-name> - <security> - <model> - <permission-description> - <permission-name>con-admin</permission-name> - <description>Contributors admin</description> - </permission-description> - <scheme> - <domain></domain> - <item> - <path>/</path> - <permission> - <permission-name>con-admin</permission-name> - <role-name>con-admin</role-name> - </permission> - </item> - </scheme> - </model> - </security> - </portlet> -</portlet-app> Deleted: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,2 +0,0 @@ -<server> -</server> Deleted: branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-contributor/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>ConPortletInstance</instance-name> - <component-ref>ConPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/feeds-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/feeds-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/feeds-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>FeedsPortletInstance</instance-name> + <component-ref>feeds.FeedsPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>FeedsPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Deleted: branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-feeds/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>FeedsPortletInstance</instance-name> - <component-ref>FeedsPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/downloads-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/downloads-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/downloads-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>DownloadCounterPortletInstance</instance-name> + <component-ref>counter.DownloadCounterPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>DownloadCounterPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> Deleted: branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-file-access/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,2 +0,0 @@ -<server> -</server> Modified: branches/forge/adam/portal-extensions-2.2/forge-forums/maven.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-forums/maven.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-forums/maven.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -5,9 +5,9 @@ --> <project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util"> <goal name="prj-install"> - <ant:copy todir="${local.deploy.dir}"> + <!--<ant:copy todir="${local.deploy.dir}"> <ant:fileset dir="to-copy" /> - </ant:copy> + </ant:copy>--> </goal> <goal name="clean"> Added: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/freezone-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>PrjFreezonePortletInstance</instance-name> + <component-ref>prj-freezone.PrjFreezonePortlet</component-ref> + </instance> + <instance> + <instance-name>FreezoneDefaultPagePortletInstance</instance-name> + <component-ref>prj-freezone.PrjFreezonePortlet</component-ref> + <preferences> + <preference> + <name>page</name> + <value>default/members/default/freezone/welcome.html</value> + </preference> + </preferences> + </instance> + <instance> + <instance-name>FreezoneRightPanelPortletInstance</instance-name> + <component-ref>prj-freezone.PrjFreezonePortlet</component-ref> + <preferences> + <preference> + <name>page</name> + <value>default/members/default/freezone/rightPanelContent.html</value> + </preference> + </preferences> + </instance> + </deployment> +</deployments> Deleted: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>PrjFreezonePortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Deleted: branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-freezone/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,27 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>PrjFreezonePortletInstance</instance-name> - <component-ref>PrjFreezonePortlet</component-ref> - </instance> - <instance> - <instance-name>FreezoneDefaultPagePortletInstance</instance-name> - <component-ref>PrjFreezonePortlet</component-ref> - <preferences> - <preference> - <name>page</name> - <value>default/members/default/freezone/welcome.html</value> - </preference> - </preferences> - </instance> - <instance> - <instance-name>FreezoneRightPanelPortletInstance</instance-name> - <component-ref>PrjFreezonePortlet</component-ref> - <preferences> - <preference> - <name>page</name> - <value>default/members/default/freezone/rightPanelContent.html</value> - </preference> - </preferences> - </instance> -</instances> Modified: branches/forge/adam/portal-extensions-2.2/forge-login/to-copy/login-config.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-login/to-copy/login-config.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-login/to-copy/login-config.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,41 +1,26 @@ <?xml version='1.0'?> -<!-- - JBoss, the OpenSource J2EE webOS - Distributable under LGPL license. - See terms of license at gnu.org. - --> <!DOCTYPE policy PUBLIC "-//JBoss//DTD JBOSS Security Config 3.0//EN" "http://www.jboss.org/j2ee/dtd/security_config.dtd"> <policy> + <!-- For the JCR CMS --> + <application-policy name="cms"> + <authentication> + <login-module code="org.apache.jackrabbit.core.security.SimpleLoginModule" flag="required"/> + </authentication> + </application-policy> + <application-policy name="portal"> <authentication> <login-module code="org.jboss.portal.core.security.jaas.ForgeHibernateLoginModule" flag="required"> <module-option name="unauthenticatedIdentity">guest</module-option> <module-option name="hashAlgorithm">MD5</module-option> <module-option name="hashEncoding">HEX</module-option> - <module-option name="factoryJNDIName">java:/portal/SessionFactory</module-option> - <module-option name="principalsQuery">SELECT u.password FROM UserImpl AS u WHERE u.userName=:username</module-option> - <module-option name="rolesQuery">SELECT g.name FROM UserImpl AS u LEFT JOIN u.roles AS g WHERE u.userName=:username</module-option> + <module-option name="userModuleJNDIName">java:/portal/UserModule</module-option> <module-option name="additionalRole">Authenticated</module-option> <module-option name="password-stacking">useFirstPass</module-option> <module-option name="jbossdb">java:JBossDS</module-option> </login-module> </authentication> </application-policy> - <application-policy name="webdav"> - <authentication> - <login-module code="org.jboss.portal.core.security.jaas.ForgeHibernateLoginModule" flag="sufficient"> - <module-option name="unauthenticatedIdentity">guest</module-option> - <module-option name="hashAlgorithm">MD5</module-option> - <module-option name="hashEncoding">HEX</module-option> - <module-option name="factoryJNDIName">java:/portal/SessionFactory</module-option> - <module-option name="principalsQuery">SELECT u.password FROM UserImpl AS u LEFT JOIN u.roles AS g WHERE u.userName=:username AND g.name='Admin'</module-option> - <module-option name="rolesQuery">SELECT u.userName FROM UserImpl AS u WHERE :username='a' AND :username='b'</module-option> - <module-option name="additionalRole">root</module-option> - </login-module> - <login-module code="org.jboss.portal.core.security.jaas.IdentityPropagationLoginModule" flag="sufficient"> - </login-module> - </authentication> - </application-policy> </policy> Deleted: branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>Login</portlet-name> - <security></security> - </portlet> -</portlet-app> Deleted: branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,2 +0,0 @@ -<server> -</server> Added: branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/login-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/login-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/login-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>LoginInstance</instance-name> + <component-ref>forgeLogin.Login</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-login-portlet/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>LoginInstance</instance-name> - <component-ref>Login</component-ref> - </instance> -</instances> Deleted: branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>MapPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Added: branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/map-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/map-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/map-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>MapPortletInstance</instance-name> + <component-ref>map.MapPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-map/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>MapPortletInstance</instance-name> - <component-ref>MapPortlet</component-ref> - </instance> -</instances> Deleted: branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,23 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>NavigationPortlet</portlet-name> - <security> - <model> - <permission-description> - <permission-name>Admin</permission-name> - <description>Admin</description> - </permission-description> - <scheme> - <domain></domain> - <item> - <path>/</path> - <permission> - <permission-name>Admin</permission-name> - <role-name>Admin</role-name> - </permission> - </item> - </scheme> - </model> - </security> - </portlet> -</portlet-app> Deleted: branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,2 +0,0 @@ -<server> -</server> Added: branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/navigation-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/navigation-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/navigation-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>NavigationPortletInstance</instance-name> + <component-ref>navigation.NavigationPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-navigation/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>NavigationPortletInstance</instance-name> - <component-ref>NavigationPortlet</component-ref> - </instance> -</instances> Deleted: branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>PodcastPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Added: branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/podcast-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/podcast-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/podcast-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>PodcastPortletInstance</instance-name> + <component-ref>podcast.PodcastPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-podcast/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>PodcastPortletInstance</instance-name> - <component-ref>PodcastPortlet</component-ref> - </instance> -</instances> Modified: branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-portal-attr/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -4,14 +4,15 @@ "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <description>JBoss Portal</description> + <!-- + | Uncomment in clustered mode : use http session replication + + <distributable/> - - <!-- The server manager located by the main servlet. --> - <context-param> - <param-name>org.jboss.portal.server#SERVER_MANAGER</param-name> - <param-value>portal:service=ServerManager</param-value> - </context-param> - + --> + + <!-- LABS FILTERS --> + <!-- SSL Processor --> <filter> <filter-name>SSLProcessor</filter-name> @@ -20,10 +21,15 @@ <filter-mapping> <filter-name>SSLProcessor</filter-name> - <servlet-name>PortalServlet</servlet-name> + <servlet-name>PortalServletWithPathMapping</servlet-name> </filter-mapping> - <!-- Forge filter --> + <filter-mapping> + <filter-name>SSLProcessor</filter-name> + <servlet-name>PortalServletWithDefaultServletMapping</servlet-name> + </filter-mapping> + + <!-- Forge filter --> <filter> <filter-name>AttributesFilter</filter-name> <filter-class>org.jboss.forge.portal.AttributesFilter</filter-class> @@ -31,25 +37,25 @@ <filter-mapping> <filter-name>AttributesFilter</filter-name> - <servlet-name>PortalServlet</servlet-name> - </filter-mapping> - - <!-- The transaction filter start and stop a JTA transaction around the request. --> - <filter> - <filter-name>TransactionFilter</filter-name> - <filter-class>org.jboss.portal.core.servlet.TransactionFilter</filter-class> - </filter> + <servlet-name>PortalServletWithPathMapping</servlet-name> + </filter-mapping> - <!-- We wrap the portal request with a transaction --> <filter-mapping> - <filter-name>TransactionFilter</filter-name> - <servlet-name>PortalServlet</servlet-name> + <filter-name>AttributesFilter</filter-name> + <servlet-name>PortalServletWithDefaultServletMapping</servlet-name> </filter-mapping> + <!-- END OF LABS FILTERS --> + <!-- The portal servlet is the main entrance point --> <servlet> - <servlet-name>PortalServlet</servlet-name> - <servlet-class>org.jboss.portal.core.servlet.CoreServlet</servlet-class> + <servlet-name>PortalServletWithPathMapping</servlet-name> + <servlet-class>org.jboss.portal.server.servlet.PortalServlet</servlet-class> + <init-param> + <param-name>asDefaultServlet</param-name> + <param-value>false</param-value> + <description>The servlet needs to know wether it is set as a default servlet or not</description> + </init-param> <load-on-startup>0</load-on-startup> <security-role-ref> <role-name>Authenticated</role-name> @@ -57,27 +63,43 @@ </security-role-ref> </servlet> + <!-- The portal servlet is the main entrance point --> + <servlet> + <servlet-name>PortalServletWithDefaultServletMapping</servlet-name> + <servlet-class>org.jboss.portal.server.servlet.PortalServlet</servlet-class> + <init-param> + <param-name>asDefaultServlet</param-name> + <param-value>true</param-value> + <description>The servlet needs to know wether it is set as a default servlet or not</description> + </init-param> + <load-on-startup>0</load-on-startup> + <security-role-ref> + <role-name>Authenticated</role-name> + <role-link>Authenticated</role-link> + </security-role-ref> + </servlet> + <!-- Provide access to unauthenticated users --> <servlet-mapping> - <servlet-name>PortalServlet</servlet-name> + <servlet-name>PortalServletWithPathMapping</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <!-- Provide secure access to unauthenticated users --> <servlet-mapping> - <servlet-name>PortalServlet</servlet-name> + <servlet-name>PortalServletWithPathMapping</servlet-name> <url-pattern>/sec/*</url-pattern> </servlet-mapping> <!-- Provide access to authenticated users --> <servlet-mapping> - <servlet-name>PortalServlet</servlet-name> + <servlet-name>PortalServletWithPathMapping</servlet-name> <url-pattern>/auth/*</url-pattern> </servlet-mapping> <!-- Provide secure access to authenticated users --> <servlet-mapping> - <servlet-name>PortalServlet</servlet-name> + <servlet-name>PortalServletWithPathMapping</servlet-name> <url-pattern>/authsec/*</url-pattern> </servlet-mapping> @@ -86,6 +108,10 @@ <servlet-name>jsp</servlet-name> <url-pattern>/login.jsp</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>jsp</servlet-name> + <url-pattern>/error.jsp</url-pattern> + </servlet-mapping> <session-config> <session-timeout>15</session-timeout> @@ -157,8 +183,8 @@ <auth-method>FORM</auth-method> <realm-name>JBoss Portal</realm-name> <form-login-config> - <form-login-page>/index.html?ctrl:id=page.default.login</form-login-page> - <form-error-page>/index.html?ctrl:id=window.default.LoginWindow&ctrl:type=action&action=loginFailed</form-error-page> + <form-login-page>/login.jsp</form-login-page> + <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> Deleted: branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>PrjDownloadsPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Deleted: branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>PrjDownloadsPortletInstance</instance-name> - <component-ref>PrjDownloadsPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/prj-downloads-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/prj-downloads-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-downloads/src/web/WEB-INF/prj-downloads-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>PrjDownloadsPortletInstance</instance-name> + <component-ref>prj-downloads.PrjDownloadsPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>PrjInfoPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Deleted: branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>PrjInfoPortletInstance</instance-name> - <component-ref>PrjInfoPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/prj-info-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/prj-info-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-prj-info/src/web/WEB-INF/prj-info-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>PrjInfoPortletInstance</instance-name> + <component-ref>prj-info.PrjInfoPortlet</component-ref> + </instance> + </deployment> +</deployments> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-portlet.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,6 +0,0 @@ -<portlet-app> - <portlet> - <portlet-name>StatusPortlet</portlet-name> - <security></security> - </portlet> -</portlet-app> \ No newline at end of file Deleted: branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-service.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-service.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1 +0,0 @@ -<server></server> \ No newline at end of file Added: branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-web.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-web.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/jboss-web.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Deleted: branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/portlet-instances.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/portlet-instances.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -1,7 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<instances> - <instance> - <instance-name>StatusPortletInstance</instance-name> - <component-ref>StatusPortlet</component-ref> - </instance> -</instances> Added: branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/status-object.xml =================================================================== --- branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/status-object.xml 2006-02-04 11:00:21 UTC (rev 2261) +++ branches/forge/adam/portal-extensions-2.2/forge-status/src/web/WEB-INF/status-object.xml 2006-02-04 18:54:12 UTC (rev 2262) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<deployments> + <deployment> + <if-exists>overwrite</if-exists> + <instance> + <instance-name>StatusPortletInstance</instance-name> + <component-ref>status.StatusPortlet</component-ref> +... [truncated message content] |