Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] AspectJ syntax errors in AJHotDraw -v0.4

I'm afraid I'm not familar with the AJHotDraw codebase, does it just
need bringing 'up to date' (I remember hearing about it a few years
ago).  If you have a git repo or source zip, I might be able to find
the time to open it up and see what is wrong.

Andy

On 7 December 2011 17:40, Kotrappa Sirbi <kotrappa06@xxxxxxxxx> wrote:
> Hi !! All
>
> AspectJ syntax errors in AJHotDraw -v0.4 in  /**JDOStorageFormat.java**/
> class 22 errors type mismatch and can't resolve toa type.
> Please somebody can help me on Ubuntu 10.10  and same problem on Win XP/Win
> 7 in Eclipse . All highlighted lines are errors.
>
> /**JDOStorageFormat.java**/
>
> package org.jhotdraw.util;
>
> import org.jhotdraw.framework.*;
>
> import org.jhotdraw.standard.StandardDrawing;
>
> import java.io.*;
>
> import java.util.*;
>
> import java.util.List;
>
> import java.awt.*;
>
> import javax.jdo.*;
>
> import javax.swing.*;
>
> import javax.swing.event.ListSelectionListener;
>
> import javax.swing.event.ListSelectionEvent;
>
>
>
>
>
>
> public String store(String fileName, Drawing storeDrawing) throws
> IOException {
>
> PersistenceManager pm = getPersistenceManager(fileName);
>
> String drawingName = null;
>
> Drawing txnDrawing = crossTxnBoundaries(storeDrawing);
>
> endTransaction(pm, false);
>
> startTransaction(pm);
>
> try {
>
> Extent extent = pm.getExtent(StandardDrawing.class, true);
>
> DrawingListModel listModel = new DrawingListModel(extent.iterator());
>
> drawingName = showStoreDialog(listModel, storeDrawing);
>
> if (drawingName != null) {
>
> storeDrawing.setTitle(drawingName);
>
> txnDrawing.setTitle(drawingName);
>
> pm.makePersistent(txnDrawing);
>
> }
>
> }
>
> finally {
>
> endTransaction(pm, (drawingName != null));
>
> }
>
> // there must be always a transaction running
>
> startTransaction(pm);
>
> return drawingName;
>
> }
>
> /**
>
> * Restore a Drawing from a file with a given name. The name must be should
> with regard to the
>
> * FileFilter that means, it should have the appropriate file extension.
>
> *
>
> * @param fileName of the file in which the Drawing has been saved
>
> * @return restored Drawing
>
> */
>
> public synchronized Drawing restore(String fileName) throws IOException {
>
> PersistenceManager pm = getPersistenceManager(fileName);
>
> endTransaction(pm, false);
>
> startTransaction(pm);
>
> Drawing restoredDrawing = null;
>
> try {
>
> Extent extent = pm.getExtent(StandardDrawing.class, true);
>
> DrawingListModel listModel = new DrawingListModel(extent.iterator());
>
> Drawing txnDrawing = showRestoreDialog(listModel);
>
> if (txnDrawing != null) {
>
> // pm.retrieve(txnDrawing);
>
> // retrieveAll(pm, (StandardDrawing)txnDrawing);
>
> // restoredDrawing = crossTxnBoundaries(txnDrawing);
>
> restoredDrawing = txnDrawing;
>
> }
>
> }
>
> finally {
>
> endTransaction(pm, false);
>
> }
>
> // there must be always a transaction running
>
> startTransaction(pm);
>
> return restoredDrawing;
>
> }
>
> private void retrieveAll(PersistenceManager pm, Figure figure) {
>
> pm.retrieve(figure);
>
> FigureEnumeration fe = figure.figures();
>
> while (fe.hasNextFigure()) {
>
> retrieveAll(pm, fe.nextFigure());
>
> }
>
> }
>
> private Drawing crossTxnBoundaries(Drawing originalDrawing) {
>
> return (Drawing)((StandardDrawing)originalDrawing).clone();
>
> // return originalDrawing;
>
> }
>
> private synchronized PersistenceManager getPersistenceManager(String
> fileName) {
>
> PersistenceManager pm = (PersistenceManager)pms.get(fileName);
>
> if (pm == null) {
>
> pm = createPersistenceManagerFactory(fileName).getPersistenceManager();
>
> pms.put(fileName, pm);
>
> }
>
> return pm;
>
> }
>
> private PersistenceManagerFactory createPersistenceManagerFactory(String
> dbFileName) {
>
> Properties pmfProps = new Properties();
>
> pmfProps.put(
>
> "javax.jdo.PersistenceManagerFactoryClass",
>
> "com.poet.jdo.PersistenceManagerFactories" );
>
> pmfProps.put(
>
> "javax.jdo.option.ConnectionURL",
>
> "fastobjects://LOCAL/MyBase.j1" );
>
> final PersistenceManagerFactory pmf =
>
> JDOHelper.getPersistenceManagerFactory( pmfProps );
>
> return pmf;
>
> }
>
> private static void startTransaction(PersistenceManager pm) {
>
> if (!pm.currentTransaction().isActive()) {
>
> pm.currentTransaction().begin();
>
> }
>
> }
>
> private static void endTransaction(PersistenceManager pm, boolean doCommit)
> {
>
> if (pm.currentTransaction().isActive()) {
>
> if (doCommit) {
>
> pm.currentTransaction().commit();
>
> }
>
> else {
>
> pm.currentTransaction().rollback();
>
> }
>
> }
>
> }
>
> private String showStoreDialog(ListModel listModel, Drawing storeDrawing) {
>
> final String msgString = "Specify a name for the drawing";
>
> final JTextField nameTextField = new JTextField(storeDrawing.getTitle());
>
> final JList dataList = new JList(listModel);
>
> final JScrollPane dbContentScrollPane = new JScrollPane(dataList);
>
> Object[] guiComponents = {msgString, dbContentScrollPane, nameTextField};
>
> dataList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
>
> dataList.setValueIsAdjusting(true);
>
> dataList.addListSelectionListener(new ListSelectionListener() {
>
> public void valueChanged(ListSelectionEvent e) {
>
> nameTextField.setText(dataList.getSelectedValue().toString());
>
> }
>
> });
>
> final JOptionPane optionPane = new JOptionPane(
>
> guiComponents,
>
> JOptionPane.PLAIN_MESSAGE,
>
> JOptionPane.OK_CANCEL_OPTION);
>
> final JDialog dialog = optionPane.createDialog(null, "Restore a drawing from
> the database");
>
> // dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
>
> // dialog.addWindowListener(new WindowAdapter() {
>
> // public void windowClosing(WindowEvent we) {
>
> // System.exit(0);
>
> // }
>
> // });
>
> dialog.setVisible(true);
>
> if ((optionPane.getValue() != null) && (optionPane.getValue().equals(new
> Integer(JOptionPane.OK_OPTION)))) {
>
> return nameTextField.getText();
>
> }
>
> else {
>
> return null;
>
> }
>
> }
>
> private Drawing showRestoreDialog(DrawingListModel listModel) {
>
> final String msgString = "Select a drawing";
>
> final JList dataList = new JList(listModel);
>
> final JScrollPane dbContentScrollPane = new JScrollPane(dataList);
>
> Object[] guiComponents = {msgString, dbContentScrollPane};
>
> dataList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
>
> dataList.setValueIsAdjusting(true);
>
> final JOptionPane optionPane = new JOptionPane(
>
> guiComponents,
>
> JOptionPane.PLAIN_MESSAGE,
>
> JOptionPane.OK_CANCEL_OPTION);
>
> final JDialog dialog = optionPane.createDialog(null, "Restore a drawing from
> the database");
>
> dialog.setVisible(true);
>
> if ((optionPane.getValue() != null)
>
> && (optionPane.getValue().equals(new Integer(JOptionPane.OK_OPTION)))
>
> && (dataList.getSelectedIndex() >= 0)
>
> && (dataList.getSelectedIndex() < dataList.getModel().getSize())) {
>
> return listModel.getDrawingAt(dataList.getSelectedIndex());
>
> }
>
> else {
>
> return null;
>
> }
>
> }
>
> static class DrawingListModel extends AbstractListModel {
>
> private List myList;
>
> DrawingListModel(Iterator iter) {
>
> myList = CollectionsFactory.current().createList();
>
> while (iter.hasNext()) {
>
> Object o = iter.next();
>
> System.out.println("extent: " + o + " .. " + ((Drawing)o).getTitle());
>
> myList.add(o);
>
> }
>
> }
>
> public Object getElementAt(int index) {
>
> return getDrawingAt(index).getTitle();
>
> }
>
> protected Drawing getDrawingAt(int index) {
>
> return ((Drawing)myList.get(index));
>
> }
>
> public int getSize() {
>
> return myList.size();
>
> }
>
> }
>
> static class DrawingSelector extends JDialog {
>
> DrawingSelector() {
>
> init();
>
> }
>
> private void init() {
>
> setTitle("Select Drawing");
>
> getContentPane().setLayout(new BorderLayout());
>
> getContentPane().add(new JLabel("Database content"), BorderLayout.NORTH);
>
> setSize(200, 200);
>
> }
>
> }
>
> public static void main(String[] args) {
>
> DrawingSelector frame = new DrawingSelector();
>
> try {
>
> Drawing newDrawing = new StandardDrawing();
>
> newDrawing.setTitle("TestDrawingName" + new
> Random(System.currentTimeMillis()).nextLong());
>
> new JDOStorageFormat().store("base.j2", newDrawing);
>
> System.exit(0);
>
> }
>
> catch (IOException e) {
>
> e.printStackTrace();
>
> }
>
> // frame.setVisible(true);
>
> }
>
> }
>
>   Thanking You,
>
>
> Regards
>
> S Kotrappa
>
>
>
>
>
>
> On Wed, Dec 7, 2011 at 10:30 PM, <aspectj-users-request@xxxxxxxxxxx> wrote:
>>
>> Send aspectj-users mailing list submissions to
>>        aspectj-users@xxxxxxxxxxx
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>        https://dev.eclipse.org/mailman/listinfo/aspectj-users
>> or, via email, send a message with subject or body 'help' to
>>        aspectj-users-request@xxxxxxxxxxx
>>
>> You can reach the person managing the list at
>>        aspectj-users-owner@xxxxxxxxxxx
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of aspectj-users digest..."
>>
>>
>> Today's Topics:
>>
>>   1. How to inject a static field into a multitude of  types with
>>      AspectJ? (mark Kharitonov)
>>   2. AOSD 2012 Student Volunteer program (Eric Bodden)
>>   3. Re: How to inject a static field into a multitude of types
>>      with AspectJ? (Andy Clement)
>>   4. Re: Using aspect to pass a metadata as a parameter through
>>      SOAP (Andy Clement)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Wed, 7 Dec 2011 11:44:14 +0200
>> From: mark Kharitonov <mark.kharitonov@xxxxxxxxx>
>> To: aspectj-users@xxxxxxxxxxx
>> Subject: [aspectj-users] How to inject a static field into a multitude
>>        of      types with AspectJ?
>> Message-ID:
>>
>>  <CAG2YSPyhWBuTPy83pW+bBJqkUhGZPmNM6vyyDLUPoEed+NBGyw@xxxxxxxxxxxxxx>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> I would like to add a log4j.Logger private static field into a multitude
>> of
>> types. For instance, into all the types annotated with the @Path
>> annotation.
>>
>> This my current aspect code:
>>
>>    public aspect LoggingAspect {
>>      public interface HttpHandlerType {}
>>      declare parents: (@Path *) implements HttpHandlerType;
>>
>>      public Logger HttpHandlerType.Log = Logger.getLogger(getClass());
>>
>>      pointcut httpHandlerMethods(HttpHandlerType o) :
>> within(HttpHandlerType+) &&
>>        execution(@(GET || PUT || POST || DELETE) public * *.*(..)) &&
>> this(o);
>>
>>      before(HttpHandlerType o): httpHandlerMethods(o) {
>>        if (o.Log.isInfoEnabled()) {
>>          o.Log.info(logMethod(thisJoinPoint));
>>        }
>>      }
>>
>>      after(HttpHandlerType o) returning (Object result):
>> httpHandlerMethods(o) {
>>        if (o.Log.isDebugEnabled()) {
>>          o.Log.debug(logMethod(thisJoinPoint, result));
>>        }
>>      }
>>
>>      after(HttpHandlerType o) throwing (Exception e):
>> httpHandlerMethods(o) {
>>        if (o.Log.isEnabledFor(Level.ERROR)) {
>>          o.Log.error(logMethod(thisJoinPoint), e);
>>        }
>>      }
>>
>>      private static String logMethod(JoinPoint jp) {
>>        ...
>>      }
>>
>>      private static String logMethod(JoinPoint jp, Object result) {
>>        ...
>>      }
>>    }
>>
>> The problem is that the Log field is an instance field, while it should be
>> a static one. But one cannot specify a static field inside an interface.
>>
>> So my question is how to change the aspect implementation to make the Log
>> a
>> static field?
>>
>> Thanks.
>>
>> --
>> Be well and prosper.
>> ==============================
>> "There are two kinds of people.Those whose guns are loaded and those who
>> dig."
>>   ("The good, the bad and the ugly")
>> So let us drink for our guns always be loaded.
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> <https://dev.eclipse.org/mailman/private/aspectj-users/attachments/20111207/c844c749/attachment.htm>
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Wed, 7 Dec 2011 14:35:23 +0100
>> From: Eric Bodden <eric.bodden@xxxxxxxxxxxx>
>> To: aspectj-users@xxxxxxxxxxx
>> Subject: [aspectj-users] AOSD 2012 Student Volunteer program
>> Message-ID:
>>
>>  <CALhVNN+VG8Tc+kPrK00XmdSOcjr7ut2fY51zx=mq+8wHZnoYQg@xxxxxxxxxxxxxx>
>> Content-Type: text/plain; charset=windows-1252
>>
>> The Student Volunteer program is a great opportunity for students
>> interested in topics of advanced modularity and Aspect-Oriented
>> Software Development (AOSD) to stay tuned on the cutting edge
>> scientific and technical advances in this area. This is also an
>> opportunity for the interested grad and undergrad students to engage
>> with their peers: both students and senior researchers and
>> practitioners. As ever, the AOSD 2012 Student Volunteer program will
>> strive to provide an active and interactive environment for the
>> students to benefit from the research program of the conference, as
>> well as to develop their professional network and enjoy the social
>> events.
>>
>> Special Call for Students From European Universities
>> * The AOSD 2012 Student Volunteer program will provide 10 dedicated
>> spots for graduate students from European universities
>> * The applications will be prioritized based on the relevance of the
>> student work to AOSD, the potential extension of the AOSD community
>> via integration of related work from new/underrepresented research
>> groups, and the circumstances of individual students.
>>
>> The student volunteers will receive:
>> * Free student registration for the conference.
>> * Free participation in all social events including one banquet ticket.
>> * Excellent networking opportunities: both working as a team with
>> other volunteers, and interacting with other conference participants.
>> * The program chairs will strive to (as much as possible) ensure that
>> the volunteers are assigned to the tutorials, workshops,
>> demonstrations or other events of their interest.
>> * When not on duty, volunteers will have free admission to all
>> conference events, provided space is available.
>>
>> The student volunteers will provide 15-20 hours of work on conference
>> support tasks throughout the duration of the conference, including:
>> * Technical assistance for the main conference sessions, workshops,
>> tutorials, demonstrations, or evening events.
>> * Help at conference bag packing and signposting.
>> * Help at the registration desk.
>> * Help in arranging, rearranging and disassembling conference ?facilities.
>> * Technical assistance to speakers and conference participants.
>>
>> The applicants for student volunteer positions must be:
>> * Enrolled as a full-time student during the 2011-2012 academic year.
>> * Willing to be friendly (no natural outgoing personality required,
>> just a strong desire to do a good job).
>> * Proficient in English.
>> * Proficiency in other languages is an advantage.
>>
>> How to Apply
>> Please send your application in English by email to the Student
>> Volunteers Chairs at [student-volunteers at aosd.net]. The Student
>> Volunteers Chairs will confirm receipt of the submission. An
>> application should include:
>> * A short motivation Letter;
>> * A CV
>> * Contact name, phone number, and email address of a faculty member at
>> your institution who will recommend you as a student volunteer
>> (Supervisors might be contacted to confirm the appropriateness of the
>> candidates.)
>> * The dates and times of your arrival and departure
>>
>> In the event that one?s student volunteer application is not accepted,
>> you may still register using the early registration rate. Please
>> contact registration at aosd.net.
>> If you have further questions please contact the Student Volunteers
>> Chairs (Ruzanna Chitchyan or Jens Lincke) at volunteers at aosd.net.
>>
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Wed, 7 Dec 2011 08:17:26 -0800
>> From: Andy Clement <andrew.clement@xxxxxxxxx>
>> To: aspectj-users@xxxxxxxxxxx
>> Subject: Re: [aspectj-users] How to inject a static field into a
>>        multitude of types with AspectJ?
>> Message-ID:
>>
>>  <CAAu=NOmTuzVFe0=JdoEWu5fHYih6=-yUXO3eCO5unSBM+JWz6w@xxxxxxxxxxxxxx>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> Hi,
>>
>> Currently you can't make those static declarations on interfaces, but
>> it has been requested a few times and I would like to get to it soon.
>> In the meantime you can simulate it using a pertypewithin
>> instantiation model.  This thread discusses it:
>>
>>
>> http://aspectj.2085585.n4.nabble.com/Introduce-static-members-into-several-classes-at-once-td2080794.html
>>
>> hope that helps,
>>
>> cheers,
>> Andy
>>
>> On 7 December 2011 01:44, mark Kharitonov <mark.kharitonov@xxxxxxxxx>
>> wrote:
>> > I would like to add a log4j.Logger private static field into a multitude
>> > of
>> > types. For instance, into all the types annotated with the @Path
>> > annotation.
>> >
>> > This my current aspect code:
>> >
>> > ??? public aspect LoggingAspect {
>> > ????? public interface HttpHandlerType {}
>> > ????? declare parents: (@Path *) implements HttpHandlerType;
>> >
>> > ????? public Logger HttpHandlerType.Log = Logger.getLogger(getClass());
>> >
>> > ????? pointcut httpHandlerMethods(HttpHandlerType o) :
>> > within(HttpHandlerType+) &&
>> > ??????? execution(@(GET || PUT || POST || DELETE) public * *.*(..)) &&
>> > this(o);
>> >
>> > ????? before(HttpHandlerType o): httpHandlerMethods(o) {
>> > ??????? if (o.Log.isInfoEnabled()) {
>> > ????????? o.Log.info(logMethod(thisJoinPoint));
>> > ??????? }
>> > ????? }
>> >
>> > ????? after(HttpHandlerType o) returning (Object result):
>> > httpHandlerMethods(o) {
>> > ??????? if (o.Log.isDebugEnabled()) {
>> > ????????? o.Log.debug(logMethod(thisJoinPoint, result));
>> > ??????? }
>> > ????? }
>> >
>> > ????? after(HttpHandlerType o) throwing (Exception e):
>> > httpHandlerMethods(o)
>> > {
>> > ??????? if (o.Log.isEnabledFor(Level.ERROR)) {
>> > ????????? o.Log.error(logMethod(thisJoinPoint), e);
>> > ??????? }
>> > ????? }
>> >
>> > ????? private static String logMethod(JoinPoint jp) {
>> > ??????? ...
>> > ????? }
>> >
>> > ????? private static String logMethod(JoinPoint jp, Object result) {
>> > ??????? ...
>> > ????? }
>> > ??? }
>> >
>> > The problem is that the Log field is an instance field, while it should
>> > be a
>> > static one. But one cannot specify a static field inside an interface.
>> >
>> > So my question is how to change the aspect implementation to make the
>> > Log a
>> > static field?
>> >
>> > Thanks.
>> >
>> > --
>> > Be well and prosper.
>> > ==============================
>> > "There are two kinds of people.Those whose guns are loaded and those who
>> > dig."
>> > ?? ("The good, the bad and the ugly")
>> > So let us drink for our guns always be loaded.
>> >
>> >
>> > _______________________________________________
>> > aspectj-users mailing list
>> > aspectj-users@xxxxxxxxxxx
>> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
>> >
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Wed, 7 Dec 2011 08:19:19 -0800
>> From: Andy Clement <andrew.clement@xxxxxxxxx>
>> To: aspectj-users@xxxxxxxxxxx
>> Subject: Re: [aspectj-users] Using aspect to pass a metadata as a
>>        parameter through SOAP
>> Message-ID:
>>
>>  <CAAu=NO=SiBYbH=fB6yudM1U_HkzxJ9wJq5DMi9mxsES5Ynjhwg@xxxxxxxxxxxxxx>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> Hi,
>>
>> > But I am wondering if this will even work and can be done using aspectj.
>> > It would be great if someone can tell me if this can be done using
>> > aspectj . If yes, will it solve my problem. Highly appreciate any
>> > help.
>>
>> I guess in theory, what you are proposing will work.  But it may get
>> tricky to coordinate if there are multiple requests going on
>> simultaneously and multiple threads handling them.
>>
>> cheers,
>> Andy
>>
>> On 5 December 2011 10:50, Ashiwan.S. <sivakumarash007@xxxxxxxxx> wrote:
>> > Hi,
>> >
>> > Thank you so much for the reply.
>> > I guess I would have to modify the bytecode and xml specification for
>> > the data (since the application has been written to use SOAP). If
>> > that's the case, then I wonder if aspectj can help me at all in
>> > modularizing this work.
>> >
>> > I am thinking of doing something as below using aspectj.
>> >
>> > 1. Write a client side aspect which has a nested static class inside
>> > it. The class implements a remote method. The remote method will save
>> > the extra data in the object every time the data is available from the
>> > HTTP request.
>> > 2. Write a server side aspect such that , before the actual EJB call,
>> > make a remote method call to get the data and then proceed further
>> > with the actual call.,
>> >
>> > I understand that there is an extra overhead in making RMI call for
>> > every request received from the Front-end to the Business logic.
>> > But I am wondering if this will even work and can be done using aspectj.
>> > It would be great if someone can tell me if this can be done using
>> > aspectj . If yes, will it solve my problem. Highly appreciate any
>> > help.
>> >
>> > Thanks,
>> > Ashiwan
>> >
>> > --
>> > -Ashiwan
>> > _______________________________________________
>> > aspectj-users mailing list
>> > aspectj-users@xxxxxxxxxxx
>> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
>> End of aspectj-users Digest, Vol 82, Issue 4
>> ********************************************
>
>
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top