Anleitung aendern einer Javafunktion

cancel
Showing results for 
Search instead for 
Did you mean: 
mahlzeit
Member II

Anleitung aendern einer Javafunktion

Hallo,

Ich habe eine Funktion generateUserName die ich anpassen moechte. (s.a. [12])
Gefunden habe ich sie in InvitationServiceImpl.class.

Wie stelle ich das an?
(zweilinkejavapfoten)


Meine bisherigen Versuche:

## 1. find class
$ find org -name "*nvit*" -exec grep -i gener {} \; -print

## 2. view class source
$ class=org/alfresco/repo/invitation/InvitationServiceImpl.class
$ ls $class
$ name=`echo $class | sed "s/\.class//"`
$ javap -c $name

## 3. dl source
$ url=http://svn.alfresco.com/repos/alfresco-open-mirror                        $ repo=alfresco/HEAD/root/projects/repository/source/java/
$ wget $url/$repo/$name.java

## 4. edit source
$ bname=`basename $name`
$ cp -p $bname.java $bname.java.org
$ vi $baname.java
$ diff -c $bname.java.org $bname.java
*** InvitationServiceImpl.java.org      Fri Aug 26 12:17:35 2011
— InvitationServiceImpl.java  Wed Aug 31 12:00:09 2011
***************
*** 838,843 ****
— 838,844 —-
          do
          {
              inviteeUserName = usernameGenerator.generateUserName(inviteeFirstName, inviteeLastName, inviteeEmail, i);
+             inviteeUserName = "ext_".inviterUserName."_".inviteeUserName ;
              i++;
          } while (this.personService.personExists(inviteeUserName) && (i < getMaxUserNameGenRetries()));


Aber wie nun weiter?


Danke.
Mahlzeit Heiko

—————————————————-

[12] http://forums1.man.alfresco.com/en/viewtopic.php?f=47&t=25356&sid=d560829084d3e9081213022c4d6a7c5b
invite external user to site
  …I have found out that this is the problem in : InvitationServiceImpl
  Why?
2 Replies
jpfi_4454
Member II

Re: Anleitung aendern einer Javafunktion

Hi,

google mal nach den Schlagworten Spring & dependency injection…dann dürfte dir an dem folgenden Bsp einiges klarer werden.

der InvitationService bekommt über Spring eine bean "userNameGenerator" injektziert.
Diese bean wird in der authentication-services-context.xml deklariert:
<!–  –>
    <bean id="nameBasedUserNameGenerator" class="org.alfresco.repo.security.authentication.NameBasedUserNameGenerator">
            <!– name patterns available:
             %lastName%,  lower case last name
             %firstName%, lower case first name
             %emailAddress% email address
              %i% lower case first name inital
           –>
        <property name="namePattern">
           <value>%firstName%_%lastName%</value>
        </property>
       
        <property name="userNameLength">
            <value>10</value>
        </property>
    </bean>
   
  

durch ändern der property namePattern kannst du bspw. deklarativ das vom generator verwendete Pattern ändern.
Dies machst du natürlich nicht in der  authentication-services-context.xml Datei sondern in dem du die bean in einer eigenen *-context.xml Datei im classpath unter /alfresco/extension überschreibst, bspw:
tomcat/shared/classes/alfresco/extension/my-user-name-genertor-context.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
  <bean id="nameBasedUserNameGenerator" class="org.alfresco.repo.security.authentication.NameBasedUserNameGenerator">
            <!– name patterns available:
             %lastName%,  lower case last name
             %firstName%, lower case first name
             %emailAddress% email address
              %i% lower case first name inital
           –>
        <property name="namePattern">
           <value>%lastName%,%firstName%</value>
        </property>
       
        <property name="userNameLength">
            <value>10</value>
        </property>
    </bean>
   </beans>

VG, Jan
mahlzeit
Member II

Re: Anleitung aendern einer Javafunktion

Vielen Dank. Es funktioniert.
Nachteil: Es fehlt die Zuordnung zu der einladenden Person. (inviterUserName)

Mahlzeit Heiko

Zusammenfassung:

- workaound
  - s. [34]

## overwrite authentication-services-context.xml
f=tomcat/shared/classes/alfresco/extension/my-user-name-genertor-context.xml
ls -l $f
cat > $f <<EOF
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
  <bean id="nameBasedUserNameGenerator" class="org.alfresco.repo.security.authentication.NameBasedUserNameGenerator">
            <!– name patterns available:
             %lastName%,  lower case last name
             %firstName%, lower case first name
             %emailAddress% email address
              %i% lower case first name inital
           –>
        <property name="namePattern">
           <value>ext_%i%%lastName%</value>
        </property>

        <property name="userNameLength">
            <value>10</value>
        </property>
    </bean>
   </beans>
EOF
./alfresco.sh stop
./alfresco.sh start

[34] http://forums.alfresco.com/de/viewtopic.php?f=7&t=857