Re: Random thought

2000-09-26 Thread Stephen Adkins

>PS. A random thought:
>What is Turbine? That's what makes your project spin! ;-)

or ...

What is Turbine? It's the engine that make your project take off.





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: [vote] DB Schema

2000-09-20 Thread Stephen Adkins

Hi,

>What about even shorter notatoin, something like
>
>TurbineU_PK
>TurbineR_PK
>TurbineG_PK
>TurbineP_PK
>TurbineUGR_FK_U
>TurbineUGR_FK_G
>TurbineUGR_FK_R
>TurbineRP_FK_R
>TurbineRP_FK_P
>
>+ namespace safe
>+ no ambiguity
>+ no truncated names
>
>Thoughts?

Index names and other database object names related to tables need only
be unique in the first 18 chars.  Therefore, they _could_ be assigned
serial numbers (ie. IDX_00456).  The application _never_ has to refer
to them by name anyway.  However, they should *not* be generated this
way because error messages typically include the database object name
(i.e. the index name) and the index names should make it clear to a
_human_viewer_ what the index was.

So...

   1. It really doesn't matter how the generator creates index names
  except that they should be unique in 18 chars and...
   2. relatively mnemonic.

When I design databases, I use the rule that table names may be longer
than 18 chars on occasion, but that every table name should be unique
in the first 14 chars.  This gives me plenty of room to make my index
names.

Someone thought I was suggesting that the table names be changed
*again*.  Not so.  I was simply suggesting that we validate that all
of the databases we care about will support the use of long table names
even if we force ourselves to make each table name unique in the first
14 (or 18) characters.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: [vote] DB Schema

2000-09-20 Thread Stephen Adkins

Hi,

>> - some db systems has restrictions on name-length of database-objects, e.g.
>> Informix 18 chars (lowercase) on all objects (tables, columns, views, ...)
>> 
>> So here a shorter prefix instead of Turbine would do better.

This is a great point worth considering.
However, it may still work. (read below)

>Ugh.  -1 on supporting databases with arbitrary restrictions like this
>(i.e. broken).

These databases are not broken.  They are that way because the SQL spec
only calls for 18 characters.  Oracle only recognizes the first 18
characters, although it allows you to provide additional characters.
(Fortunately, all of the proposed names are unique within the
first 18 characters.  i.e. TurbineUserPermission and TurbineUserPermission2
would be interpreted by Oracle as the same table.)

I do not think it is reasonable to _not_ support databases which have
a maximum number of 18 characters (i.e. Oracle).  However, I am not aware
of any databases which have this restriction which limit you from supplying
more characters (i.e. Oracle).

Maybe a poll would be in order from all people who know the different
databases, to ensure that all of the main databases that you want to
support can take a table name > 18 chars, even if it only looks at the
first 18 chars.

In fact, I suggest that you make sure that all table names are unique in
the first 14 characters.  This is because it is common to have other
database objects (indexes, etc.) which need to be unique in the first
18 chars.  Thus, a table name like TurbineUserGroupRole would often be
accompanied by a set of indexes named 

   TurbineUserGroupRole_PK
   TurbineUserGroupRole_AK1
   TurbineUserGroupRole_IE2

These will not work in Oracle because they are not unique in the first
18 characters.  Rather, an autogenerating tool might truncate the table
name to 14 characters in order to have room for the suffix like so.

   TurbineUserGro_PK
   TurbineUserGro_AK1
   TurbineUserGro_IE2

So, my recommendations are 

  * ensure that all table names in Turbine are unique in the first 14 chars
(the proposed tables are)
  * ensure that all generated database objects (does Torque do this) are
unique in the first 18 chars
  * ensure that all of the desired databases allow you to supply more than
18 chars for a table name (I don't know of any that don't) even if they
only look at the first 18 chars to identify the table

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: building docs

2000-09-13 Thread Stephen Adkins

Hi,

>theres quite a few available. Do a search at relevant search engine -
>alternatively there is a imaging toolkit java extension that does it all
>and is redistributable. Have a look at java.sun.com.
>
>If you want a lightweight toolkit I believe there is one available at
>www.acme.com but the site is down atm. Not sure about license - thou from
>what I remember it was usable.

The classes at www.acme.com implement a GIF encoder.
They still require the Java/AWT (and the X frame buffer).

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: building docs

2000-09-13 Thread Stephen Adkins

Hi,

>> > > My bet is that something is trynig to use AWT for image
manipulation... This
>> is obviously bad, because
>> > > you need an X11 on your Linux box, remote X Server to connect, or
build the
>> docs on a Windoze machine.
...
>> It's the image-rendering code in Stylebook. Basically, any tag like
>> > producer="parser" printer="image">
>> (in book2project.xsl) is using AWT calls to generate JPGs dynamically.
These
>> calls require a GDI context, which is always available under Windows.
AFAIK,
>> that's just the way Stylebook works. :-(
>
>Okay, who wants to volunteer to fix it?

The standard way to solve this problem is not to reinvent all of the Java/AWT,
but to simply provide a virtual X server.

"Xvfb" is the "X virtual frame buffer".  It is an X-server for running
on server machines that have no display hardware, and it is useful in just
these sort of situations.

   http://www.xfree86.org/4.0/Xvfb.1.html

I installed this on my RedHat Linux server with the following command (as
root).

   rpm -Uvh
ftp://rpmfind.net/linux/redhat/redhat-5.2/i386/RedHat/RPMS/XFree86-Xvfb-3.3.
2.3-25.i386.rpm

Stephen

P.S. In case you are lacking X11 altogether, on my Linux box, I found a
suitable
FTP server and installed a bunch of X packages like so.
(However, these FTP servers get reorganized periodically, so they may not
still work perfectly as shown.)

rpm -Uvh
ftp://ftp.rackspace.com/pub/Linux/redhat-6.0/i386/RedHat/RPMS/XFree86-libs-3
.3.3.1-49.i386.rpm

rpm -Uvh
ftp://ftp.rackspace.com/pub/Linux/redhat-6.0/i386/RedHat/RPMS/XFree86-xfs-3.
3.3.1-49.i386.rpm

rpm -Uvh
ftp://ftp.rackspace.com/pub/Linux/redhat-6.0/i386/RedHat/RPMS/XFree86-3.3.3.
1-49.i386.rpm

rpm -Uvh
ftp://ftp.valinux.com/pub/mirrors/redhat/redhat/old-releases/redhat-6.0/i386
/RedHat/RPMS/XFree86-doc-3.3.3.1-49.i386.rpm

rpm -Uvh
ftp://ftp.valinux.com/pub/mirrors/redhat/redhat/old-releases/redhat-6.0/i386
/RedHat/RPMS/XFree86-VGA16-3.3.3.1-49.i386.rpm

rpm -Uvh
ftp://ftp.valinux.com/pub/mirrors/redhat/redhat/old-releases/redhat-6.0/i386
/RedHat/RPMS/XFree86-SVGA-3.3.3.1-49.i386.rpm

rpm -Uvh
ftp://ftp.valinux.com/pub/mirrors/redhat/redhat/old-releases/redhat-6.0/i386
/RedHat/RPMS/chkfontpath-1.4.1-1.i386.rpm

rpm -Uvh
ftp://ftp.valinux.com/pub/mirrors/redhat/redhat/old-releases/redhat-6.0/i386
/RedHat/RPMS/XFree86-100dpi-fonts-3.3.3.1-49.i386.rpm

rpm -Uvh
ftp://ftp.valinux.com/pub/mirrors/redhat/redhat/old-releases/redhat-6.0/i386
/RedHat/RPMS/XFree86-75dpi-fonts-3.3.3.1-49.i386.rpm




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: [Proposal] Groups ACL

2000-09-12 Thread Stephen Adkins

Hi,

>CREATE TABLE Group (
>   GROUPID int(11) DEFAULT '0' NOT NULL,
>   NAME varchar(99) DEFAULT '' NOT NULL,
>   DESCRIPTION varchar(1024) DEFAULT '' NOT NULL,
>   PRIMARY KEY (GROUPID)
>);
...
>Instead of making this a general Scarab thing, I would like to make this
>more general for others to use as well by including it in Turbine. So, what
>do you think? Can I modify the stuff in Turbine to add this feature?

Good idea.  Good functionality.

I would recommend that you choose a different table name.
"GROUP" is a SQL keyword, and I would bet that using it as a
table name would severely limit portability.

How about "Team" ?

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




ASP Architecture in Turbine

2000-08-26 Thread Stephen Adkins

Hi,

SUMMARY

I would like to contribute to Turbine to make it a more effective
tool for developing ASP-architected applications.

I would like feedback on the following four suggestions before
I start submitting patches.
At the moment, they mainly affect the database, laying the
groundwork. (Java code would follow in the future.)
I have experimented with this, and I could make the modifications
(with suitable defaulting) so that it would not break any existing
code, but it would enable new ASP-oriented future development.
This would enable a site hosting (for example) Scarab to host
it for multiple customers in the same database.

 1. Inclusion of an "org" table to represent all the
organizations being hosted
 2. Inclusion of "org_id" in many of the tables to
distinguish the data belonging to different organizations
 3. Inclusion of more tables (see below) to support
more of the ASP infrastructure
 4. Inclusion of a unique ID as the primary key in every table
(even the associative tables). (not necessarily for ASP but
it supports more uniform data access code)

Thanks. (Background detail follows.)

Stephen
__

DETAILED BACKGROUND INFO

You are all aware of the trends toward web-enabled software
being hosted by Application Service Providers (ASP's) and
rented to users on a subscription basis.  (We are a startup
ASP.)

One of the biggest obstacles to providing ASP-hosted software
is that it is not architected for true "one-to-many" hosting,
where data from multiple customers are hosted in the same
database.  The database needs to support the identification
of each row of data as belonging to a particular organization
and the security mechanisms of the application need to enforce
this separation of data very robustly.  Otherwise, two
competitors in the same industry would never consent to having
their application hosted by the same ASP.

Most people recognize the trend toward ASP's as a huge
change in the software industry.  The non-ASP-friendly
architecture of most current applications means that there
will be a whole new set of application winners and losers
in the new ASP-driven era.

I would like to help Turbine support the new generation
of ASP-architected applications.

The following is a design document I wrote a while ago which
explains these ideas in more detail.  Please note that this design 
was done independent of Turbine.  The table names correspond
to Turbine tables in the following way.

   usr  => Visitor
   role_usr_grant   => VisitorRole
   org_role => UserRole
   perm_role_grant  => RolePermission
   perm => Permission
   org_usr_memb
   org 
   org_app_access  
   app 
   app_partnership 
   app_partner 

===
ENTITY-RELATIONSHIP DIAGRAM
===

 ===   =  =
 usrapp_partner  app
 ===   =  =
   |   |  |   o |  |  |  |
   |   |  ++  +---+ |  +---+  |  |
   |   |   |  | |  |  |  |
   |   |   M  o M  M  |  |
   |   |    ===   |  |
   |   | orgapp_partnership   |  |
   |   |    ===   |  |
   |   |  |  |  | | | |  |
   |   ++  +--+  |  | | +-+  ++  |
   ||  | |  | +-+ |  |   |
   |M  M |  M   | M  M   M
   |     |  | ==  
   |   org_usr_memb  | org_role | org_app_accessperm
   |     |  | ==  
   | |  |   |   ||
   +--++-+  |   |   ||
  ||+---+   |   | +--+
  |||   |   | |
  MMM   M   M M
      =
role_usr_grant perm_role_grant
      =


Definitions, Uniqueness, and Cardinality


Definitions for all the tables are given below, and statements
are made between the relationships to other tables.
In addition to an ID used for a primary key,
certain alternate keys are also guaranteed unique.

usr  - An independent user of the ASP-hosted suite of application
   services.  Anyone may become a user, and he immediately has
   access to all public applications.  He may be granted a
membership
   in one

Re: Apache Velocity vs WebMacro

2000-08-26 Thread Stephen Adkins

Hi,

This is my one and only message on the subject.

 * Free software is about freedom.

There is nothing tragic about one free software project
spawning another similar one.

Evidently the needs/wants of the developers and users
(i.e. all of the stakeholders) of WebMacro were different
enough from the developers and users of Turbine that
it was more desirable/easier to reimplement than work out the
differences.

We all recognize the value of unity.
There is also value in diversity.

Freedom is about letting individuals make decisions that
are right for them.
We don't need to have hard feelings about other people's
freedom.

Well done to the WebMacro team for pioneering an
elegant template system which has inspired imitators!
Well done to the Turbine team for seeing the
opportunities to incorporate it into a larger framework!
Well done to the Velocity team for implementing something
so quickly.
It's up to us to decide what's right for each one of us
to use.

There is no reason that any of us can't continue to use
WebMacro, Turbine, Velocity in any combination.
There is no reason the two teams will not help each other
while developing separate code bases.
There is no reason why the WebMacro code base cannot include
some classes implementing a Turbine service
There is no reason the WebMacro team can't APL the code right
now.
There would be no reason the Velocity team can't absorb a
large amount of WebMacro code very quickly if it were APL'ed.
There is no reason WebMacro can't absorb the benefits of
Velocity (because it _is_ APL'ed).

 * Long live software freedom!

(And being diverse does not mean we don't get along.)
My $0.05 (a bit more than $0.02).

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: Limiting SQL results.

2000-08-08 Thread Stephen Adkins

FYI.
(I am not in a position to implement this at the moment,
but if someone wants to, that's why I'm passing on this info.)

Oracle supports the limit natively like this

   select * from prod
   where rownum <= 100;

This will get the first 100 rows.
Note that rownum starts at 1 with the first row selected.
Therefore, the following will return no rows.

   select * from prod
   where rownum between 81 and 100;

This is because the first row is never selected, so you
never get up to 51 to begin selecting rows!

So the proper syntax for the offset+limit stuff is to
compute 

   maxrownum = offset + limit;

Then use the computed maxrownum 
(i.e. 100, if offset = 81 and limit = 20) in the SQL

   select * from prod
   where rownum <= 100;

and simply throw away the first 80 rows.

Stephen

P.S. Please note that the database engine does not
guarantee that rows 61-80 will be different from
rows 81-100!  This is a result of SQL's nature, that
if the result set is not ordered explicitly so that
every row has its own unique place in the order
(i.e. by a *full* primary or alternate key), its order
is not guaranteed to be the same on subsequent queries.
In practice, it usually is.

Furthermore, if rows are inserted into the database
in between the two queries, you may get unexpected results.
In practice, what is being implemented is usually adequate.


At 04:51 PM 8/8/00 -0400, you wrote:
>I just checked in the stuff for limiting the results.
>
>You use Criteria.setLimit() to limit the number of rows returned, and
>Criteria.setOffset() to change the starting row returned.
>
>If this is supported natively, the native sql to do this will be added
>to the query, otherwise, the resultset will be limited at the client.
>
>Postgres and MySQL both support limit and offset natively.
>Sybase & MS SQL/Server support limit but not offset natively.
>
>I didn't know what the deal was with the other DB's, so I didn't add
>anything for it.
>
>I only tested it with Postgres, but I put in code for Sybase and MySQL. 
>Please test these.
>
>   -Nissim
>
>
>
>To subscribe:[EMAIL PROTECTED]
>To unsubscribe:  [EMAIL PROTECTED]
>Search: 
>Problems?:   [EMAIL PROTECTED]
>



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: Exception: java.sql.SQLException: ORA-01400: cannot insert NULL into ("TURBINE"."VISITOR"."VISITORID")

2000-07-28 Thread Stephen Adkins

Hi,

>We need to autoincrement VISITORID when we inserts something in the VISITOR
>table and we use SEQUENCE
>
>drop sequence VISITORID_seq;
>create sequence VISITORID_seq start with 1;
>
>
>-
>create table VISITOR (
>VISITORID number DEFAULT VISITORID_seq.nextval UNIQUE,
 ERROR!!
>LOGINID   varchar2 (32) NOT NULL UNIQUE,
>PASSWORD_VALUEvarchar2 (32),
>CONFIRM_VALUE varchar2 (32),
>FIRST_NAMEvarchar2 (99) NOT NULL,
> LAST_NAME varchar2 (99) NOT NULL,
>ADDRESS1  varchar2 (255),
>
>Someone knows how to do this?
>

The normal way that you do this in Oracle is

   insert into Visitor
 (VISITORID,
  LOGINID,
  ...)
   values
 (VISITORID_seq.nextval,
  401,
  ...);

>What about to create a trigger to  insert VISITORID_seq.nextval into
VISITORID?

Of course, a trigger would also work, and it would work
more like the MySQL AUTO_INCREMENT option, for which
Oracle has no counterpart.

So to make this work for Oracle, either
  a) a trigger should be written and included in the SQL
 source for Oracle
  b) the code needs to be aware that some databases (Oracle)
 can't autogenerate the Primary Key and it needs to be
 included in the insert list

Stephen

P.S. You could also use the IDBroker instead of an Oracle
sequence.




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: Torque Build Problems ( was Re: [Torque is in the repository!] )

2000-07-24 Thread Stephen Adkins

Hi,

May I suggest we stop calling it "Torque"?
Having a separate name for it was fine before it was part
of Turbine.  Once it is part of Turbine, the need
for a separate name goes completely away.

Besides, the functionality has nothing to do with
torque, and it makes it more confusing than enlightening.
I suggest that classes whose names include "Torque" should
be renamed to something which accurately describes what
those classes are.

I like the functionality.
I just want to see it become part of Turbine rather than
a thing with its own name and identity.

Stephen

At 07:11 AM 7/24/00 CDT, you wrote:
>FYI: 
>
>I had trouble with a clean build after this checkin.  Do we need the
>output/test directories in the Turbine jar ( or even in CVS? ).  I removed
the
>directory (output) locally for building.  Also the TorqueTask.java file was a
>copy of one of the other ant task's.  So I changed the name and fixed the
>import.  I'm hesitant to commit and mess something up on your end.  If you
>want I'll commit the changes to TorqueTask, or send you the diffs.
>
>Thanks again for this stuff, I'll be checking out its operation shortly!
>
>Jason van Zyl <[EMAIL PROTECTED]> wrote:
>> Hi,
>> 
>> After one failed attempt torque is now in the 
>> repository (sorry jon) !
>> 
>> I should have it producing production quality
>> SQL from XML tomorrow, at least for MySQL.
>> 
>> jvz.
>> 
>> -- 
>> 
>> Jason van Zyl
>> [EMAIL PROTECTED]
>> 
>> 
>> 
>> 
>> To subscribe:[EMAIL PROTECTED]
>> To unsubscribe:  [EMAIL PROTECTED]
>> Search: 
>> Problems?:   [EMAIL PROTECTED]
>
>
>Jeff Brekke
>mailto:[EMAIL PROTECTED]
>http://sites.netscape.net/ekkerbj
>
>
>
>Get your own FREE, personal Netscape WebMail account today at
http://webmail.netscape.com.
>
>
>
>To subscribe:[EMAIL PROTECTED]
>To unsubscribe:  [EMAIL PROTECTED]
>Search: 
>Problems?:   [EMAIL PROTECTED]
>



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




What a turbine is... and the logo

2000-07-21 Thread Stephen Adkins

Hi,

Just for the record, some may be wondering just exactly what a Turbine is.
(I studied Aeronautical Engineering, but it has been a few years.) ;-)
I'll try to put it in non-aeronautic speak, to the best of my memory.

A turbine is a set of "propellers", all one after the other, on the same
shaft.  If functions exactly opposite to a propeller.  A propeller takes
rotational energy from the motor and pushes the air back, providing
thrust.  A turbine sits in a speeding stream of air, slowing down the
air, and producing rotational energy (typically for driving a generator
of some type).

An aircraft jet engine has a turbine in it, although not all turbines are 
in jet engines.  Some turbines are in power stations, where steam is
turned into rotational energy, which drives a generator, which produces
electric power.

A jet engine relies on burning fuel to thrust air out the back of the
engine for its thrust.  It does not act at all like a propeller.
A jet engine is made up of several stages: the fan, the compressor,
the combustion chamber, the turbine, and the nozzle.  The fan, compressor,
and turbine all have "blades" that look sort of like propeller blades,
but none of them has the function of a propeller.  All of these are
connected to the same shaft, but at their respective stages.

 * Fan - looks like a big propeller, but its purpose is not to produce
   thrust. It rotates within a large housing called a "cowling".
   It's purpose is to "pre-compress" the air flowing into the compressor.
 * Compressor - Precompressed air from the fan flows into the compressor.
   The compressor has many rows of blades to compress the air to a higher
   and higher pressure as it approaches the combustion chamber.  The purpose
   of this is that combustion produces a lot more energy when it occurs at
   high pressure.  So the compressor's job is to get the air to a high
   pressure so that you get the most bang per gallon of fuel in combustion.
 * Combustion chamber - Fuel is mixed with the high pressure air and
   ignited.  The explosion (burn process) and the shape of the chamber 
   cause the air to rush out the back of the engine at high speed.
 * Turbine - On its way out of the engine, the air flows over the turbine,
   which looks exactly like the compressor but in reverse.  Its job is to
   steal some of the energy back from the exiting gases in order to keep
   driving the compressor and fan and thus keep the engine running.
 * Nozzle - The chamber where the gases (air and burned fuel) escape from
   the jet engine is shaped in a special way to facilitate maximum speedup
   of the air and hence maximum thrust.

There! That's your annual dose of thermodynamics and aerodynamics. ;-)

So... how is this relevant to the logo hunt?

If you do a side view, you probably ought to stack up a set of "propellers",
one in front of the other to be more like a turbine.

It appears the logo hunt is going more in the direction of the simple
"saw blade" over "turbine".  That looks pretty nice.
Real turbines have straight blades and always operate within a housing.
(add an outer circle perhaps? maybe I will try this.)
Nonetheless, the "saw blade's" swept blades (not straight) do give the
impression of rotation.

Anyway, I hope this background was mildly interesting, though not completely
relevant.

Stephen


At 11:59 PM 7/20/00 -0700, you wrote:
>on 7/20/2000 11:26 PM, "Leon Messerschmidt" <[EMAIL PROTECTED]> wrote:
>
>> Haven't seen Rafal's logo yet, but these would my be first choice at the
>> moment - maybe
>> add a dash of color? :-)
>> 
>> ~ Leon
>
>nice, but propellers aren't turbines.
>
>-jon
>




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: JDBCSchemaToDatabaseMap

2000-07-17 Thread Stephen Adkins

>Brilliant! Leon and I were just discussing this possibility today - this
>will allow the following:
>
>DSD design tool -> SQL schema -> DB -> JDBC metadata -> XML schema -> (tweak
>XML) -> Peers/DO's/MapBuilders
>
>Having an XML "schema" will allow us to add all kinds of validation info
>etc. per field and per table in the "tweak XML" phase, beyond the limits of
>SQL's NOT NULL, etc. Please let us know when you have something to submit -
>we would definitely like to help!
>

Yes, this would be great.
To have the most benefit, the XML schema writer should read in the existing
XML document, modify it appropriately, and write it out again.
That way, the "tweaks" would not be lost.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: Invalidating Pages

2000-07-14 Thread Stephen Adkins

Hi,

There are some cache-control HTTP headers that may do the trick.
I think they are mainly designed for use by intermediate proxy-servers
which do cacheing, but the browsers may use them as well.

   Pragma: no-cache (HTTP 1.0)
   Cache-control: no-cache  (HTTP 1.1)
   Expires: Fri, 14 Jul 2000 09:48:54 GMT   (HTTP 1.0)

You should experiment to see how they work.

Of course, this solution would cause the browser to never cache the
page.  The "Back" button would always cause a request to the server.

Some JavaScript trick may be employed if an action on a screen
conditionally invalidates one of the history entries, forcing a
new request when you browse "Back" to it.

Stephen

At 09:19 AM 7/14/00 +, you wrote:
>I am looking for a way to invalidate pages after the information that
>has generated them changed.  For example:  a user does query which
>returns a list of contacts.  The user then clicks on the contact and
>modifies the contact name.  Then, they click on the back button and see
>the name spelled the old way in the search results.  How I do I make it
>so the page comes up and says that it has expired.  Or better yet, have
>it automatically refresh.
>
>Thanks,
>
>Dan Diephouse
>
>
>
>
>To subscribe:[EMAIL PROTECTED]
>To unsubscribe:  [EMAIL PROTECTED]
>Search: 
>Problems?:   [EMAIL PROTECTED]
>



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: Putting GIF file in the WebMacro file

2000-07-06 Thread Stephen Adkins

Hi,
Try using an absolute path name for the image.
i.e.

   

to pick up the image in DOCUMENT_ROOT.
Or better yet, create an images directory under DOCUMENT_ROOT
and refer to the image this way.

   

Stephen

At 01:31 PM 7/6/00 -0700, you wrote:
>I am trying to add a logo (GIF file) at the right botton corner of the
>Turbine Admin page.  I modified turbine\templates\navigations\footer.wm as
>follows:
>
>
>
>   
>   
>Turbine - A Framework for building Secure Web Sites. 
>   
>  
>   
>   
>  
>  
>
>
>I placed QMetrics.gif in the same directory as footer.wm.  The logo did not
>show up on the Turbine Admin page.  It only displayed a box with an X inside
>(it seems like it can't find the gif file).  I also tried placing the GIF
>file under Server Root Directory, Application Root Directory and other
>places.  The logo still did not get displayed.  Any help is appreciated.
>




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




RE: Turbine Table Relationships

2000-07-04 Thread Stephen Adkins

...
>
>  PERMISSION  >o--|-  ROLEPERMISSION  -|--o< USERROLE
>
...
backwards again
...

should be

PERMISSION  -|--o<  ROLEPERMISSION  >o--|- USERROLE
VISITOR -|--oo--|- USERROLE

Stephen



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: postgres and other db woes (long)

2000-06-30 Thread Stephen Adkins

Re: OPL ...

>I probably won't put it in Turbine.  I want it to be
>available to folks who don't use Turbine.  The
>advantages of the mapping layer are more apparent in
>systems which have more tables and more relations than
>the typical servlet app.  
> ...
>- george

Can you at least get it set up on SourceForge.com?
It doesn't seem like the best way to communicate about
something which is external to Turbine is through the
Turbine mailing list.

Whoever of us are interested will get hooked up through
the SourceForge.com OPL mailing list.

Stephen



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: Turbine Table Relationships

2000-06-28 Thread Stephen Adkins

At 10:17 AM 6/28/00 -0400, you wrote:
>Are these the correct relationships for the base Turbine db;
>
>ROLEPERMISSION.PERMISSIONID -|---o-< PERMISSION.PERMISSIONID
>ROLEPERMISSION.ROLEID -|---o-< USERROLE.ROLEID
>VISITORROLE.ROLEID -|--o-< USERROLE.ROLEID
>VISITORROLE.VISITORID -|--o-< VISITOR.VISITORID
>

No.
You have these relationships exactly backwards.
You have written that...
  * each RolePermission is associated with 0 or more Permissions
  * each Permission is associated with exactly one RolePermission
  * each RolePermission is associated with 0 or more UserRoles
  * each UserRole is associated with exactly one RolePermission
  * each VisitorRole is associated with 0 or more UserRoles
  * each UserRole is associated with exactly one VisitorRole
  * each VisitorRole is associated with 0 or more Visitors
  * each Visitor is associated with exactly one VisitorRole

It should be the other way around.

ROLEPERMISSION.PERMISSIONID >o---|- PERMISSION.PERMISSIONID
ROLEPERMISSION.ROLEID >o---|- USERROLE.ROLEID
VISITORROLE.ROLEID >o--|- USERROLE.ROLEID
VISITORROLE.VISITORID >o--|- VISITOR.VISITORID

  * each RolePermission is associated with exactly one Permission
  * each Permission is associated with 0 or more RolePermissions
  * each RolePermission is associated with exactly one UserRole
  * each UserRole is associated with 0 or more RolePermissions
  * each VisitorRole is associated with exactly one UserRole
  * each UserRole is associated with 0 or more VisitorRoles
  * each VisitorRole is associated with exactly one Visitor
  * each Visitor is associated with 0 or more VisitorRoles

RolePermission and VisitorRole are really associative entities
implementing a logical many-to-many relationship between
Permissions, UserRoles, and Visitors.

PERMISSION >o---o< USERROLE
USERROLE   >o---o< VISITOR

In other words,

  * each Visitor may play many UserRoles
  * each UserRole is granted many Permissions

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: multiple log files in turbine

2000-06-23 Thread Stephen Adkins


I like the idea of multiple log files.
In my experience, you have different audiences
(i.e. operators, system administrators, DBA's)
and using more than one log with only the information
geared to the audience of that log has been a good
solution.

I also agree with John's suggestion to support the
default log concept, so that you don't unnecessarily
increase the complexity of everyone's life if they
do not need this feature.

Stephen

At 09:11 AM 6/23/00 -0700, you wrote:
>This would probably be all right, but you should leave a default setting, so
>that thos who only want one log can still just call Log.note("blah").
>
>I would be interested in hearing others' opinion on separating the Log
>entries into many different files. It seemed for awhile people were
>irritated that we defined even a single log file, separate from the servlet
>engine's log.
>




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Search: 
Problems?:   [EMAIL PROTECTED]




Re: DBFactory Patch

2000-06-15 Thread Stephen Adkins

Hi,

Jian wanted to run Turbine in such a way that each user had his own
connection to the database.

My suggestion would be to develop multiple database connection pool
support in Turbine.

(This is not a complaint, and I am not in a position to work on it
right now.  It is a collection of thoughts for those on the list 
to consider.)

It is non uncommon for DBA's to want to control the security of their
database at the database level.  i.e. they want to make certain tables
read-only for certain classes of users, etc.

They do this by creating roles, granting/revoking the appropriate
privileges to them, and then assigning these roles to users
(very similarly to Turbine's own security model).

Data security (permissions set on the database) is more secure 
because no bug in the software application can get around it.

Application security is nicer because then 
   1. you can use connection pools, 
   2. you have a finer level of control on what gets secured,
   3. and you don't have to maintain a list of users in the application
  *and* a list of users in the database (just the userid(s) 
  associated with the connection pools).

There is at least one other reason to use multiple connection pools 
(and various application server software packages have implemented them).
Multiple connection pools allows you to segment the user base into
prioritized classes of users (i.e. users, management, anonymous).

You may have 30 day-to-day users with a pool of 10 connections,
50 possible managers in different departments throughout the company
who occasionally need a report with a pool of 3 connections, and
an unlimited universe of anonymous users with a pool of 5 connections.
This means that if the number of anonymous internet users spikes up,
they have to wait on each other for a connection, while the normal
users are unimpacted by the spike because they draw from their own
pool of connections.

So, the proposal is:
  * multiple connection pool capability added to Turbine
(i.e. pools 0..n, where 0 is the default)
  * add a mapping from the Turbine VisitorRole to a pool number
(in the VisitorRole table?)
( POOL_NUMBER   integer NOT NULL default 0,)
(This schema addition would not break any existing code.)
  * the connection pool that a user gets a connection from is
specified by the role that the user is assigned in the 
application (or the max(VisitorRole.POOL_NUMBER) because
he may be assigned to many roles).
The signature of getConnection would not change
(i.e. db = DBBroker.getInstance().getConnection( dbName );).
Inside DBBroker, however would be the logic to get the
connection from the right pool.
  * the min/max connections, userid/password would all be 
assignable independently to the different connection pools 
in the properties file

Turbine would be enhanced and Jian could run it the way he wants to.
(He would have to create a role per user.  Configure a different
pool for each role.  Configure the min/max connections as 0/1 for
each pool and the userid/password appropriately.)

my $0.02.

Stephen

At 08:51 AM 6/15/00 -0700, you wrote:
>Sounds good, but it is very application specific.  I think the most apps
>would prefer the connection pool be smaller than the total number of current
>users.  I would say add it to the FAQ, but I'm not sure its working.  Let me
>know if you feel I am wrong.
>
>John McNally
>
>- Original Message -
>From: Jian He <[EMAIL PROTECTED]>
>To: Turbine <[EMAIL PROTECTED]>
>Sent: Thursday, June 15, 2000 4:35 AM
>Subject: Re: DBFactory Patch
>
>
>> ÔÚ Èý, 14 6Ô 2000 , ÄãдÁË:
>> > What is your reason for wanting a db connection associated with a
>particular
>> > login?
>>
>> My corparate is going to developing a business system on
>Linux+Oracle+Tomcat.
>> There is a lot of vouchers and lists and reports in a account,
>> and a lot of accounts in a oracle database.
>> every user open a account must give the oracle username and password.
>>
>> if i open every account with the "system" username, i must write the
>dynamic sql:
>> StringBuffer sql = new StringBuffer();
>> sql.append( "SELECT * FROM " );
>> sql.append( username );
>> sql.append( ".voucher" );
>>
>> but if i open a account with the particular username, i can write the
>static sql:
>> String sql = "SELECT * FROM voucher";
>>
>> so, i must open a connection with a particular login. :)
>>
>> >
>> > - Original Message -
>> > From: Jian He <[EMAIL PROTECTED]>
>> > To: Turbine <[EMAIL PROTECTED]>
>> > Sent: Wednesday, June 14, 2000 12:08 AM
>> > Subject: DBFactory Patch
>> >
>> >
>> > > Hi
>> > >
>> > > when i run DBFactory.getInstance().getConnection(driver, url, user1,
>> > pass1) to get the first connection,
>> > > it gives me the right connection.
>> > > but when i run DBFactory.getInstance().getConnection(driver, url,
>user2,
>> > pass2) to get the second connection,
>> > > it also gives me the first connection, it is not the right connectio

Re: BasePeer quesitonr

2000-06-05 Thread Stephen Adkins


>I am not sure how well supported the LIMIT clause is supported, does Oracle
>support it?

Oracle supports the following syntax for getting only a portion of the
rows which would otherwise be selected with a given where clause...

   select * from Visitor
   where rownum <= 200;

"rownum" is a magic "column" which is incremented for every row that has
been returned.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: ODP: Search Service for Turbine

2000-06-02 Thread Stephen Adkins

Hi,

I think I'm just a little late with this feedback, but here goes...

>At the moment I propose two interfaces to add search capability to turbine.
>This is a first draft and I would appreciate any comments and suggestions.
>It is not a service yet, but will probably be after some issues have been
>resolved. These include the issue of how to implement pooling of connections
>to the search engine. Maybe a generic pool class :-).



Naming matters for long-term maintainability and for design clarity.

Name a class a noun (i.e. what is the *thing* to which the attributes and
methods apply?).

An abstract class or particularly an interface may be named an adjective
(i.e. Serializable) because its sense is combined with the derived class
or the implementing class to make an adjective-modified noun.

  i.e. SearchEngine or SearchableRepository or even Searchable
   are preferrable over Search (a verb)

When you are tempted to name the class a verb or a general concept,
that may be good name for the package, but not for the class.

  i.e. org.apache.turbine.search is a fine package name
   Search (a verb) is not a great class name

Name the method a verb, and the class name should be a suitable object
for the verb in a sentence.

  i.e. put() is a fine method name, but that would imply you were
   "putting a SearchEngine" (which is not the intent).
   In fact, what you are putting is a search criterion
   (and "set" might be better verb than "put").  (I know, you
   are modelling this after other classes already in Turbine.
   Precedent is almost as strong a motivator in naming as any
   other standard of "correctness".)

  i.e. connect() => good. ("connect to a SearchEngine")
   put() => setSearchCriterion() ("set a search criterion for the
engine")
   get() => getSearchCriterion() ("get a search criterion from the
engine")
   doSearch() => search()  ("search a SearchEngine")
(doSearch is a really bad name, revealing that
 you have in fact named the class after a verb)
(I know I am a day late and a dollar short to influence
all
of the updates with doBuild() and doPerform().)
   


Anyway, this is just a general soapbox.
What I really want to communicate is that there's a lot of great
code being built on Turbine and I and everyone else appreciate it.
If these naming guidelines help anyone, then so be it.

Stephen

>// First interface to access a search engine:
>public interface Search
>{
>// Open a connection to the search engine
>public boolean connect (String username, String password);
>
>// Select the library to search (most search engines have the concept
>// of "libraries" of indexed stuff, e.g. the server's hd in library 1,
>// the app's db in library 2, etc.)
>public boolean setLibrary (String library);
>
>// Get & Set any variables that are specific to a search engine
>// The wrapper could declare the "names" of these variables as static
>// final Strings. One could also use a Criteria kind of class that gets
>// passed in here with all necessary variables (e.g. searchterms,
>// numofresults, fuzzyspellingstyle, etc.)
>public void put (String name, String value);
>public String get (String name);
>
>// Does the search for a user query
>// The type of searches available will depend on the
>// underlying search engine: default = 0 (Types could include
>// boolean, concept, fuzzy, etc.)
>public boolean doSearch (String query, int type);
>
>// Get an enumeration of SearchResult (see next interface)
>public Enumeration getResults();
>}
>
>
>public interface SearchResult {
>
>// Get the field names that is available for this result
>public Enumeration getFields();
>
>// Get a value for a given field name
>public String get (String fieldname);
>}
>
>Regards
>Leon
>
>
>
>
>
>To subscribe:[EMAIL PROTECTED]
>To unsubscribe:  [EMAIL PROTECTED]
>Problems?:   [EMAIL PROTECTED]
>



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Location of admin templates

2000-06-01 Thread Stephen Adkins

>> (Out of curiosity) why are the admin templates located in
>> 'docs/turbine_templates'? It seems like 'src/wm' (or something similar)
would
>> be a more appropriate location.

>hence a lot of stuff is in the docs/ directory because i wanted to also make
>it available for browsing via the website.
>at this point though, it is a bad reason and probably should be moved.
>

May I suggest src/db for the database schema creation files?

Stephen



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Turbine comments on JAKARTA-STRUTS Subproject?

2000-06-01 Thread Stephen Adkins

Hi,

No doubt a variety of you all also received this message
from the Jakarta announcement mailing list.
Any reactions?  How should we view this?

Why isn't this effort integrated or coordinated with Turbine?

Stephen

>
>The Jakarta Project Management Committee is pleased to announce the
>formation of a new subproject called JAKARTA-STRUTS.  Struts is a small
>framework for building web applications that uses the
>Model-View-Controller (MVC) design pattern commonly known as "Model 2".
>It includes the following key features:
>
>* A controller servlet with action mapping technology, which serves as
>  the "front component" for the application.
>
>* A comprehensive custom tag library for building internationalized
>  JSP pages that interact with JavaBeans managed automatically by
>  the controller servlet.
>
>* Useful utility classes that can process XML input, as well as use
>  Java reflection to populate JavaBean properties by matching names
>  in the same way that 
>  does for JSP pages.
>
>Struts will serve as a platform for exploring the optimum approaches to
>implementing the "Model 2" design pattern, and will run on any servlet
>container that supports the Servlet Specification, version 2.2 or later,
>and the JavaServer Pages (JSP) Specification, version 1.1 or later (such
>as Tomcat).
>
>Craig McClanahan
>




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




www.working-dogs.com down?

2000-05-11 Thread Stephen Adkins

Hi,

I am trying to get a daily snapshot of Turbine,
and my corner of the web can't reach www.working-dogs.com
today.

Anyone else having the same problem?
Is this known and I should just be patient?

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




With whom should I coordinate on OPaL development?

2000-05-02 Thread Stephen Adkins

Hi,

I understand that OPaL development has slowed down.

I read Scott Ambler's papers on Object Persistence Layer
development at

   http://www.ambysoft.com/mappingObjects.html
   http://www.ambysoft.com/persistenceLayer.html

Those are the design documents upon which OPaL is based.

I would like to contribute to this effort if there is
still active development going on.

Can the active OPaL developers please speak up with
regard to the development status of OPaL?

Thanks,

Stephen

P.S. If the developers are no longer on this list
 or are not working on it, I guess the subproject 
 needs a new lead.  (I'm not sure I'm that person yet.)





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Install problem - Infinite redirect detected...

2000-04-28 Thread Stephen Adkins


>> So - let me see if I unbderstand fully what you're advising.  I remove
>> reference to jsdk.jar or servlet.jar from build-turbine.sh, and it won't
>> build.  I remove references from these two files from tomcat.sh, and tomcat
>> won't start.  I'm a little confused here.
>> 
>> - George Pipkin

>...maybe someone else here can volunteer to help you.
>
>-jon

Hi,

I feel slight responsible for the confusion because of some erroneous
info I gave you earlier and then retracted.

By the way to refresh myself on this thread, I consulted

   http://www.mail-archive.com/turbine%40list.working-dogs.com/
   http://www.mail-archive.com/turbine%40list.working-dogs.com/msg01410.html

It seems like you have three issues here which are pretty much independent.

  #1. how to configure Tomcat
  #2. how to build Turbine for use with Tomcat
  #3. how to overcome the infinite redirect problem

I think I gave you erroneous instruction about #1 and #2 because
I am so much more familiar with JServ than with Tomcat.
JSDK-2.0 should normally never enter into #1 because Tomcat
implements a later version of servlets (2.2 instead of 2.0).

I understand that Turbine works with 2.2 just as well as 2.0,
but I'm not sure.  So I think that jsdk-2.0 shouldn't even
enter into #2, but again I'm not sure.

With regard to #3 I have no idea.

OK.  Sorry for the confusion I caused.
Hopefully, this message can set this thread back on a footing
where people who actually know the answers to your questions
can contribute.  ;-)

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Install problem - Infinite redirect detected...

2000-04-25 Thread Stephen Adkins

At 08:50 AM 4/25/00 -0700, you wrote:
>Why do you say using servlet.jar instead of jsdk.jar is causing the infinite
>redirect problem?  

Sorry.

What I really meant to say was...

   correct the obvious problem before tackling the subtle problem,

and we all know that Turbine will never run right
with servlet.jar.

I leave it up to others who know what's going on with the
infinite redirect to help find a resolution to that problem.

Stephen



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Install problem - Infinite redirect detected...

2000-04-25 Thread Stephen Adkins

At 09:56 AM 4/25/00 -0400, you wrote:
>Thanks for answering.  Unfortunately, that didn't fix it.  One thing I'm
>wondering - when I built it, for the JSDK= argument, I used servlet.jar
>rather than /JSDK2.0/jsdk.jar because that's the current version of that
>library.  Do you think that could have anything to do with it ?
>
>
>   - George Pipkin

yes. it has everything to do with it.
you don't want the current version of the library.
please ensure that jsdk.jar (2.0, not 2.1) is ahead of
servlet.jar in the classpath.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Turbine FAQ

2000-04-25 Thread Stephen Adkins

Hi,

I have a suggestion for the FAQ.
I think that we could improve its usefulness with the
addition of Troubleshooting sections.
This would map concrete error messages which appear
in the log files to causes.  This would help people
locate their problem more easily and find all of the
causes which might have been behind the error.

I had created such a section in the FAQ for

   Troubleshooting - Building Turbine

and added an entry for the error which I encountered
over the weekend

   java.lang.IncompatibleClassChangeError: Unimplemented interface method

Then I entered the cause of the error and the fix
(which Dave Bryson brought to our attention recently).

I normally wouldn't announce an addition to the FAQ like
this, but I noticed that when I began to do this very
thing on the weekend, my FAQ entry was removed.

If this is not a good idea, could someone let me know?
Then I won't bother clogging up the FAQ with entries
which are not appropriate.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: IncompatableClassError - FYI

2000-04-25 Thread Stephen Adkins

Dave,

I got the same problem with Blackdown JDK 1.1.8v1.
I wondered if it was a JDK 1.1 vs JDK 1.2 issue.
I upgraded to Blackdown JDK 1.2.2 RC4 and the problem went away.
However, it would be good to know that Turbine still
builds with 1.1.8.

We had a discussion about this over the weekend.

   http://list.working-dogs.com/lists/turbine/Turbine%20Digest%2004-22-00

I will add your solution to the FAQ (under Troubleshooting).

Stephen

At 06:48 PM 4/24/00 -0500, you wrote:
>If you get the java.lang.IncompatableClassChangeError when trying to
>build Turbine, move ant.jar AND xml.jar to the front of the classpath in
>the build script right after the CLASSPATH variable.  I'll correct the
>build script in CVS once I make sure this is just not a fluke on my
>machine.
>
>Anyone experience this problem?
>-- 
>dave
>[EMAIL PROTECTED]
>
>
>
>To subscribe:[EMAIL PROTECTED]
>To unsubscribe:  [EMAIL PROTECTED]
>Problems?:   [EMAIL PROTECTED]
>



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: java.lang.IncompatibleClassChangeError

2000-04-23 Thread Stephen Adkins

At 01:02 AM 4/22/00 -0700, you wrote:
>on 4/21/00 10:16 PM, Stephen Adkins <[EMAIL PROTECTED]> wrote:
>
>> java.lang.IncompatibleClassChangeError: Unimplemented interface method
>> at org.apache.tools.ant.SunParser.parse(SunParser.java:76)
>> at
>> org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:84)
>> at org.apache.tools.ant.Main.runBuild(Main.java:223)
>> at org.apache.tools.ant.Main.main(Main.java:191)
>

Whatever was the cause of it, it went away when I build Turbine
with Blackdown JDK 1.2.2 RC4.
I have moved on without resolving why it would not build with
Blackdown JDK 1.1.8 v1.  Oh well.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Question on dodoBuild...

2000-04-23 Thread Stephen Adkins

>on 4/23/00 6:31 PM, dave bryson <[EMAIL PROTECTED]> wrote:
>
>> I'm assuming this is a find/replace error. If so, let me know and I'll
>> fix them.
>
>it is a find/replace error. please fix it. :-)
>
>-jon
>

FYI.
You might want to expand your search.
The turbine tag line on the turbine web pages is...

   Turbine - A Servlet Framework for doBuilding Secure Dynamic Websites.

I think I'll dobuild a secure dynamic website today... ;-)

Stephen

P.S. This was in daily snapshot 04/22/2000.




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: java.lang.IncompatibleClassChangeError

2000-04-22 Thread Stephen Adkins

>> java.lang.IncompatibleClassChangeError: Unimplemented interface method
>> at org.apache.tools.ant.SunParser.parse(SunParser.java:76)
>> at
>> org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:84)
>> at org.apache.tools.ant.Main.runBuild(Main.java:223)
>> at org.apache.tools.ant.Main.main(Main.java:191)
>
>wait a second...do you have Ant in your classpath somewhere?
>
>something is wrong with your system...this isn't a turbine issue...
>
>-jon

I wondered the same thing.

However, I think the stack trace indicates that the classes in ant
are being found. The CLASSPATH is

   CLASSPATH=.:/usr/local/jdk118_v1/lib/classes.zip

and "ant.jar" is in the current directory

   /usr/ov/devel/src/Apache-Turbine-2421/build

Could it be that some JDK 1.2 feature got into Turbine recently?
I am running on JDK 1.1 for expressly this reason... to reveal
any incompatibilities that may be introduced.

When I try compiling it without "ant", I only get the following
message.  All of the other files compile fine.

Compiling ./java/org/apache/turbine/util/webmacro/WebMacroNavigation.java
./java/org/apache/turbine/util/webmacro/WebMacroNavigation.java:138:
Exception java.io.IOException is never thrown in the body of the
corresponding try statement.
catch (IOException e) 
^
1 error

Any more thoughts anybody?
Is this a JDK 1.1 issue?
Has anyone built a recent daily snapshot of Turbine with JDK 1.1?

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: java.lang.IncompatibleClassChangeError

2000-04-21 Thread Stephen Adkins

At 09:46 AM 4/21/00 -0700, you wrote:
>on 4/21/00 8:35 AM, Stephen Adkins <[EMAIL PROTECTED]> wrote:
>
>> I have built from daily snapshots before, but it has
>> been a while.
>> I rebuilt Turbine from sources today
>> (daily 2000/04/21 snapshot from working-dogs.com).
>> and got the following error.
>
>try removing the tubine/bin directory and build again.
>
>I changed some file names last night. I also posted about it here and on the
>Jetspeed mailing lists. :-)

There is no turbine/bin directory to remove.
I unpack the daily, edit build-turbine.sh, run it, and get the
same error as shown below.

I also went back to the last snapshot I had tried to build
and was successful in getting it built (2129).
This convinced me my configuration is not somehow hosed.

Any more thoughts?

Stephen

/usr/ov/devel/src/Apache-Turbine-2421> cd build

/usr/ov/devel/src/Apache-Turbine-2421/build> build-turbine.sh

Now building jar...
Buildfile: build-turbine.xml
java.lang.IncompatibleClassChangeError: Unimplemented interface method
at org.apache.tools.ant.SunParser.parse(SunParser.java:76)
at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:84)
at org.apache.tools.ant.Main.runBuild(Main.java:223)
at org.apache.tools.ant.Main.main(Main.java:191)

/usr/ov/devel/src/Apache-Turbine-2421/build> cd ..

/usr/ov/devel/src/Apache-Turbine-2421> find . -print

.
./lib
./lib/README.txt
./lib/activation-1.0.1.jar
./lib/castor-0.8.2.jar
./lib/ecs-1.3.2.jar
./lib/freemarker-jdk1.1.jar
./lib/freemarker-jdk1.2.jar
./lib/jndi-1.2.1.jar
./lib/mail-1.1.3.jar
./lib/village-1.1.jar
./lib/webmacro-jdk1.1.jar
./lib/webmacro-jdk1.2.jar
./lib/xerces-1.0.3.jar
./.cvsignore
./README.txt
./build
./build/bin
./build/bin/antRun
./build/README
./build/ant.jar
./build/build-turbine.bat
./build/build-turbine.sh
./build/build-turbine.xml
./build/xml.jar
./conf
./conf/TurbineMapBuilder.xml
./conf/TurbineResources.properties
./conf/WebMacro.properties
./docs
./docs/.cvsignore
./docs/CONTRIB.txt
./docs/LICENSE.txt
./docs/MySQL_id_table.sql
./docs/MySQL_users_roles_permissions.sql
./docs/Oracle_users_roles_permissions.sql
./docs/Postgres_users_roles_permissions.sql
./docs/TODO.txt
./docs/default_roles_permissions.sql
./docs/freemarker_comments.txt
./docs/fsd.html
./docs/getting_started.html
./docs/index.html
./docs/install.txt
./docs/images
./docs/images/Flow.ai
./docs/images/Loaders.ai
./docs/images/Loaders.gif
./docs/images/ModuleObjectLayout.ai
./docs/images/ModuleObjectLayout.gif
./docs/images/Modules.ai
./docs/images/Modules.gif
./docs/scheduler
./docs/scheduler/README.txt
./docs/scheduler/addjob.wm
./docs/scheduler/editjob.wm
./docs/scheduler/help.wm
./docs/scheduler/listjobs.wm
./examples
./examples/freemarker
./examples/freemarker/layouts
./examples/freemarker/layouts/default.html
./examples/freemarker/navigations
./examples/freemarker/navigations/default_bottom.html
./examples/freemarker/navigations/default_top.html
./examples/freemarker/screens
./examples/freemarker/screens/index.html
./examples/opl
./examples/opl/JyveClassMaps.xml
./examples/opl/OPaLClassMap.dtd
./examples/opl/OPaLClassMapSchema.xsd
./examples/webmacro
./examples/webmacro/README.txt
./examples/webmacro/helloWorld.wm
./examples/webmacro/layouts
./examples/webmacro/layouts/default.wm
./examples/webmacro/navigations
./examples/webmacro/navigations/default_bottom.wm
./examples/webmacro/navigations/default_top.wm
./examples/webmacro/screens
./examples/webmacro/screens/index.wm
./examples/webmacro/screens/testlink.wm
./src
./src/java
./src/java/org
./src/java/org/apache
./src/java/org/apache/java
./src/java/org/apache/java/lang
./src/java/org/apache/java/lang/.cvsignore
./src/java/org/apache/java/lang/Bytes.java
./src/java/org/apache/java/security
./src/java/org/apache/java/security/.cvsignore
./src/java/org/apache/java/security/MD5.java
./src/java/org/apache/java/security/MessageDigest.java
./src/java/org/apache/java/util
./src/java/org/apache/java/util/.cvsignore
./src/java/org/apache/java/util/Configurations.java
./src/java/org/apache/java/util/ConfigurationsRepository.java
./src/java/org/apache/java/util/ExtendedProperties.java
./src/java/org/apache/jserv
./src/java/org/apache/jserv/.cvsignore
./src/java/org/apache/jserv/JServUtils.java
./src/java/org/apache/turbine
./src/java/org/apache/turbine/modules
./src/java/org/apache/turbine/modules/.cvsignore
./src/java/org/apache/turbine/modules/Action.java
./src/java/org/apache/turbine/modules/ActionLoader.java
./src/java/org/apache/turbine/modules/Assemblers.java
./src/java/org/apache/turbine/modules/GenericLoader.java
./src/java/org/apache/turbine/modules/Layout.java
./src/java/org/apache/turbine/modules/LayoutLoader.java
./src/java/org/apache/turbine/modules/Navigation.java
./src/java/org/apache/turbine/modules/NavigationLoader.java
./src/java/org/apache/turbine/modules/Page.java
./src/java/org

java.lang.IncompatibleClassChangeError

2000-04-21 Thread Stephen Adkins

Hi,

I have been using Turbine on

   Redhat 6.0 Linux (kernel 2.2.5-15)
   Blackdown Java 1.1.8 v1

I have built from daily snapshots before, but it has
been a while.
I rebuilt Turbine from sources today
(daily 2000/04/21 snapshot from working-dogs.com).
and got the following error.

/home/spadkins> cd $PREFIX/src/Apache-Turbine-2421/build
/usr/ov/devel/src/Apache-Turbine-2421/build> ./build-turbine.sh

Now building jar...
Buildfile: build-turbine.xml
java.lang.IncompatibleClassChangeError: Unimplemented interface method
at org.apache.tools.ant.SunParser.parse(SunParser.java:76)
at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:84)
at org.apache.tools.ant.Main.runBuild(Main.java:223)
at org.apache.tools.ant.Main.main(Main.java:191)

I know it is something stupid I am leaving out.
I will be happy to add this to the FAQ in the Troubleshooting area
if someone can help me out.

Stephen
___

DETAILS:

/usr/ov/devel/src/Apache-Turbine-2421/build> echo $JAVA_HOME

/usr/local/jdk118_v1

/usr/ov/devel/src/Apache-Turbine-2421/build> echo $PATH

/usr/ov/devel/bin:/usr/local/jdk118_v1/bin:/usr/local/java/bin:/usr/local/bin:
/usr/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/spadkins/bin:/usr/local/ssl/bin:.

/usr/ov/devel/src/Apache-Turbine-2421/build>  whence javac

/usr/local/jdk118_v1/bin/javac

/usr/ov/devel/src/Apache-Turbine-2421/build> echo $CLASSPATH

.:/usr/local/java/lib/classes.zip

/usr/ov/devel/src/Apache-Turbine-2421/build> ls

README  ant.jar  bin  build-turbine.bat  build-turbine.sh
build-turbine.xml  xml.jar

/usr/ov/devel/src/Apache-Turbine-2421/build> uname -a

Linux raven.officevision.com 2.2.5-15 #2 Mon Jan 31 16:28:44 CST 2000 i586
unknown

/usr/ov/devel/src/Apache-Turbine-2421/build> ls -l $JSDK_JAR

-r--r--r--   1 spadkins spadkins76453 Apr 17 12:10
/usr/ov/devel/lib/classes/jsdk-2.0.jar

/usr/ov/devel/src/Apache-Turbine-2421/build> cat build-turbine.sh

#!/bin/sh

# ---
# The targets are the different build scripts.
# The default "jar" is suggested
# and does not require any external packages
# 
# "compile"   target builds Turbine core classes
# "clean"  target #oves bin directory
# "jar"   target builds "core" + jar file
# "javadocs"target builds the javadocs
# ---
TARGET=${1}
# TARGET=javadocs
# TARGET=compile
# TARGET=clean
# TARGET=jar

#---
# Define the paths to each of the packages
#---
JAVAMAIL=../lib/mail-1.1.3.jar
JAF=../lib/activation-1.0.1.jar
NAMING=../lib/jndi-1.2.1.jar
VILLAGE=../lib/village-1.1.jar
ECS=../lib/ecs-1.3.2.jar
XERCES=../lib/xerces-1.0.3.jar
CASTOR=../lib/castor-0.8.2.jar

#WEBMACRO=../lib/webmacro-jdk1.2.jar
WEBMACRO=../lib/webmacro-jdk1.1.jar
#FREEMARKER=../lib/freemarker-jdk1.2.jar
FREEMARKER=../lib/freemarker-jdk1.1.jar

JSDK=$JSDK_JAR

#
# No need to edit anything past here
#
if test -z "${JAVA_HOME}" ; then
echo "ERROR: JAVA_HOME not found in your environment."
echo "Please, set the JAVA_HOME variable in your environment to match the"
echo "location of the Java Virtual Machine you want to use."
exit
fi

if test -z "${TARGET}" ; then 
TARGET=jar
fi

if test -f ${JAVA_HOME}/lib/tools.jar ; then
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
fi

echo "Now building ${TARGET}..."

CP=${CLASSPATH}:${XERCES}:${JSDK}:${JAVAMAIL}:${JAF}:${VILLAGE}:${ECS}:${WEB
MACRO}:${FREEMARKER}:${NAMING}:${CASTOR}:xml.jar:ant.jar

BUILDFILE=build-turbine.xml

${JAVA_HOME}/bin/java -classpath ${CP} org.apache.tools.ant.Main -buildfile
${BUILDFILE} ${TARGET}




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




RE: idbroker

2000-03-27 Thread Stephen Adkins

At 03:10 PM 3/27/00 -0800, you wrote:
>
>> it looks like the IDBroker just returns one single int...is that a
>> concatinated high/low value?
>
>It just returns a simple int like a simple Oracle sequence.  We were
>originally thinking of returning a high/low value but John and I decided it
>wasn't necessary.
>

Before this gets too mature, can I suggest that the IDBroker return a
64-bit long rather than a 32-bit int?

I know that this is slightly more expensive computationally.
However, in enterprise object systems, signed 32-bits (2 billion 
positive combinations) is really too few.  This is particularly
true under these conditions

  * if you have ID wastage (due to large Oracle sequence increments
accompanied by server cycling)
  * if you have many deletes and new object insertions
  * if you are in a repetitive run environment (i.e. regression testing)
  * if you are in a distributed environment and need to delegate
large ranges of ID's to different allocating servers

We are working with a 1 Terabyte Oracle database with some tables
approaching 1 billion rows.  In some places, we took short cuts for
"efficiency" and assumed that an ID would fit in a signed 32-bit
integer, and we regret it.  We are potentially faced with a major
database maintenance effort or a major code rework.

It should be noted that if the system developer knows for a fact that
his ID's will never go above a certain number, his primary key ID
columns do not need to be large enough to support the full 64-bit
possible range (20 digits).  However, having the Java code use
long's positions you better to be a true enterprise-quality component.

Thanks for all the good work you are doing.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




RE: database stuff (was: Re: Scheduler Service updated)

2000-03-27 Thread Stephen Adkins


>> yea, i thought about this as well...(subclassing the generated
>> classes)...and i'm thinking that is probably the only decent solution, but
>> it does complicate things a bit...i'm still not 100% fond of
>> generating java
>> code like that...
>
>It sounds like subclassing generated classes is the only "workable" solution
>at this point and probably isn't the best for this particular situation.
>

Code generation is a particular interest to me.
I am working on some tools which take an abstract object definition
and generate the (database-specific) DDL, the BaseObject-derived classes,
and the BasePeer-derived classes.

Rather than doing subclassing for customization, I was going to use
comment-tagging
of generated methods (i.e. a comment of a certain format identifies a block of
code as having been generated and therefore replaceable by the generator.).
Many code generating products work this way.
(I will admit that most of them use so many comments that they make your code
look like crud.  My tools would not do that.)
So I'm not sure why the "subclassing is the only workable solution".

The tools would also patch the database instance and unload/reload/modify
data in
the existing table.  The whole goal of this is to be able to type "make"
and the
database gets modified from sources as easily as the code does (and they are
always in sync). ;-)

The tools will be prototyped first in Perl (at which I am an expert, I am
learning Java) driven by config files full of meta-data.
Maybe one day this will turn into Java code set, driven by XML 
(which seems to be all the rage among Java developers).
However, in the near-term, I can certainly contribute my knowledge about how
to generate DDL for a reasonable set of databases.

Stephen





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Thread per Scheduled Job

2000-03-23 Thread Stephen Adkins


>Stephen - Thanks for your earlier response on the Scheduler stuff and
>I'd like to hear if you
>have other ideas on a better way to do this.
>
>dave

Sounds great the way you are doing it.

Stephen



To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: Scheduler Service question.

2000-03-23 Thread Stephen Adkins

Dave,

For what it's worth, here are my opinions.
I see here three levels of functionality in a scheduler.

  Type 1: Single-threaded
  Type 2: Multi-threaded, no dependencies
  Type 3: Multi-threaded, with dependencies

My recommendations:

   Type 1 functionality be fully implemented first and should go into the
  first release of Turbine (release 2.0 ;-> ).  This is a minimum
  acceptable level of scheduler functionality.
   Type 2 should be implemented thereafter.
   Type 3 is a much more complex issue and should only be undertaken
  after you have gathered a lot of requirements.

Stephen

details below...

At 10:22 PM 3/22/00 -0600, you wrote:
>I'm in the process of reworking the scheduler service. In doing so, I'm
>looking at 
>the need to run each scheduled job in it's own thread.

This would be needed for Types 2 and 3.

>Under the current design, a job is rescheduled to run based upon the
>reoccuring time it's scheduled to run and the time it takes to complete.
>The run queue is sorted and prioritized by this factor.  The possible
>problem
>with this is that a long running task can force other jobs to run late
>waiting on
>a job to complete.

This is Type 1.

>If I change this to run each job in it's own thread, then the queue will
>be independent
>of the time it takes an individual task to run. So, a task is scheduled
>to run again regardless
>of the time it takes to complete and the scheduler can (in theory) run
>each job on time.

This is Type 2.

>However by doing this, it makes the scheduler function more complex.
>Because now the
>service needs some type of a callback to update the queue and it would
>be possible for 
>the scheduler to launch the task to run again even it's not finished
>from it's previous
>execution.  For example, in the case that a run again time < time to
>complete.  

This (Type 2) is how Unix "cron" works.  It is multi-process (rather than
multi-threaded), and it launches new tasks without regard for whether
the previous tasks it launches have been completed yet (or whether they
succeeded or failed).

>This can
>be solved by setting some type of state check or priority on the job but
>this adds complexity
>to the service.

This is getting into Type 3 job scheduling.  You are proposing here
a very limited set of dependency capability: a task from a single task
definition must complete before a second task from the same task
definition may be run.  This is a business rule which is relevant to
some tasks and not to others.  I would recommend that you implement
Type 2 scheduling, and people can put this logic into the task itself
if they really want it.

Once you start creating dependencies between the tasks, you will be 
faced with many more issues.  A full-fledged Type 3 scheduler could/should
support any number of the following features:

  * arbitrary dependency definitions between tasks
(i.e. task C cannot run until task A is finished and task B is finished)
  * limiting the number of tasks that can be run at a time
(i.e. don't run this task until the system load is < 80% CPU utilization)
(i.e. don't run more than 5 tasks at the same time)
(i.e. each task has a workload value, and the sum total workload values
for all tasks must not exceed a configured system-level workload capacity)
  * dependencies on file existence
(i.e. task D cannot run until file "/path/to/file" exists)
  * priorities of tasks
(i.e. if there is a limitation to the number of tasks that can be run,
the highest priority of the waiting tasks will in fact be run)

Once you start talking about dependencies, you have to think about 

  * what to do in the case of failures?
  * how do I monitor tasks? (GUI?)
  * how do I restart tasks?
  * etc.

I think Type 3 scheduling can be valuable, but really requires a much
greater vision in order to do it right.

>So my question is: What's more important to you? Can we live with a job
>(possibly)
>running a little late; or is the importance of this service worth the
>complexity of seperate thread
>per job?

I think Type 1 is quite sufficient for most purposes and the easiest to
implement in order to get to Turbine release.

Type 2 is very valuable, and should be done by the first available
person who has got the itch.

Type 3 is more of a batch processing system... not really needed in a
servlet environment.

my $0.02 ...

Stephen





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]




Re: What persistence framework recommended for Turbine apps?

2000-03-16 Thread Stephen Adkins

At 01:28 PM 3/16/00 -0800, you wrote:
>> I would add yet another option:
>> 
>>  4. Use Castor (http://castor.exolab.org)
>> 
>> --Alejandro
>
>Yes...although Castor is further off than OPaL and also doesn't have any
>real focus right now (I talked with one of the developers at Apachecon
>about it)...
>
>-jon

Isn't Castor a Java-to-XML-document solution?
I am really looking for a Java-to-RDBMS solution.

Stephen





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



Re: What persistence framework recommended for Turbine apps?

2000-03-16 Thread Stephen Adkins

>What are the requirements for your application? How experienced are you
>with databases? etc...

My application is going to be focused on project/task/issue management.

i.e. a transaction-oriented app to allow you to browse objects and
 their related objects (i.e. parent-child displays) and modify
 them as necessary.

This is functionality which was hopefully in Jetspeed, but the focus in
Jetspeed has lately been more on the portal components.  I will get back
involved with working on Jetspeed after I gain a little experience in
building simple apps from the ground up.

I have tons of experience with database design and OO analysis.
Therefore, I prefer a higher level abstraction layer such as OPaL promises.
It's my Java which is coming up to speed.

>OPaL is unfortunately not done yet. You could help complete it and then
>use that.
>
>There really is no one "right" way to do this stuff...
>
>-jon

I think I'll start out using the Peer approach, get some experience
(and some satisfaction at getting something to work ;-) ).
Then I imagine I will get around to cracking open OPaL.

One step at a time...

Stephen





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



Re: Where to get all the Turbine dependencies

2000-03-16 Thread Stephen Adkins

Hi,

I see that the following JAR files are distributed with the daily snapshots
of Turbine.

   activation-1.0.1.jar
   jndi-1.2.1.jar
   mail-1.1.2.jar
   village-1.1.jar
   webmacro-jdk1.1.jar
   webmacro-jdk1.2.jar

It is a surprise to see the Java Apache project decide to distribute the
Sun jars
in its distribution.  I thought there was some liability from the language
of the
Sun Community License.  Has Sun changed its license?  Has Java Apache
changed its
policy?

Stephen

P.S. The JARs I got from Sun were

   jaf-1.0.1.jarnot   activation-1.0.1.jar
   javamail-1.1.2.jar   not   mail-1.1.2.jar

Did we intentionally change their names or has Sun changed them?

At 11:52 AM 3/16/00 -0600, you wrote:
>Great!  You may want to add that 4 of those needed packages
>are included in the Turbine snapshot.  Also, Webmacro needs to be
>added to the classpath for compliation. The libs for it are
>also in the Turbine snapshot.
>
>Thanks,
>dave
>
>





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



Re: What persistence framework recommended for Turbine apps?

2000-03-16 Thread Stephen Adkins

John,

Who are the people who have designed/developed/contributed to OPaL?
What is the current status/progress/activity?
What remains to be completed? (What works and what doesn't?)

Stephen

P.S.  What does OPaL stand for? (Object Persistence Library? what's the a?)

At 09:57 AM 3/16/00 -0800, you wrote:
>If you have time, I would suggest you use OPaL, that way it will get
>finished.  
...
>For an application that involves much more and/or
>involves persisitence of inherited objects.  You are probably better of
>working on getting OPaL finished as you are designing your om..
>
>John McNally
>





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



What persistence framework recommended for Turbine apps?

2000-03-16 Thread Stephen Adkins

Hi,

I have been slowly coming up to speed on Turbine.
I am now designing my own application and am searching for the right
persistence design approach.

There seem to be three options suggested by existing Turbine code.

   1. Use the Peer approach used within org.apache.turbine.om.*
  This uses village.
   2. Use the OPaL, which seems to be much more sophisticated
  but which I understand is incomplete.  OPaL does not use
  village.
   3. Use village and JDBC without having a Peer for each
  major object.  This seems to be the approach taken by Jyve.

Any recommendations?

Stephen





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



Where to get all the Turbine dependencies

2000-03-16 Thread Stephen Adkins


I mentioned in a recent message that I would document all the dependencies
to get Turbine to run.  I have added this to the FAQ, along with links to
all the proper places to download this software from.

Anyone who is trying to get Turbine to run should look at the FAQ and make
sure you've got all the necessary pieces.
(Configuration, however, is a matter for another day.
The best advice here is still to read the install instructions for each
piece of software.)

Stephen





To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



Re: Problems compiling helloworld example

2000-03-16 Thread Stephen Adkins

At 11:38 AM 3/16/00 +0200, you wrote:
>Hi,
>I have problems compiling HelloWorld example from getting started
>document. I changed mycompany to markkuyp in source and in directory
>structure, and here is my command line and what I get. turbine is in
>classpath...
># javac HelloWorld.java
>HelloWorld.java:9: class com.markkuyp.modules.screens.HelloWorld must be
>declare
>d abstract. It does not define org.apache.ecs.ConcreteElement
>build(org.apache.t
>urbine.util.RunData) from class org.apache.turbine.modules.Screen.
> public class HelloWorld extends org.apache.turbine.modules.Screen
>  ^
>HelloWorld.java:11: Class com.markkuyp.modules.screens.RunData not found.
> public ConcreteElement build( RunData data ) throws Exception
>^
>HelloWorld.java:14: Class com.markkuyp.modules.screens.RunData not found
>in org.
>apache.ecs.ConcreteElement build(com.markkuyp.modules.screens.RunData).
> data.setTitle ("Hello World");
>   ^
>3 errors
>What is wrong?

It seems clear that you haven't dowloaded/installed ECS

   http://java.apache.org/ecs

or your CLASSPATH is not correct, because your javac is not
finding

   org.apache.ecs.ConcreteElement

Also, you left this line out of the HelloWorld.java example

   import org.apache.turbine.util.*;

That's why it is trying to find the RunData class in you current package
rather than finding it in Turbine.

I'm guessing you are very new to Java, because these are very basic
Java language issues.  In order to be successful with Turbine,
I suggest you find someone close to you who can help you through the 
Java language issues.

Stephen






To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



RE: HelloWorld more like GoodByeCruelWorld for me... help?

2000-03-13 Thread Stephen Adkins

>repositories=/usr/local/apache/servlets,/usr/local/servlets
>
>in my zone.properties before.  I tried adding the wrapper.classpath after it
>was failing (and it didn't help).  The HelloWorld.java file is located in
>/usr/local/servlets/com/metricom/screens and has package
>com.metricom.modules.screens; as the first line:
>
># more /usr/local/servlets/com/metricom/modules/screens/HelloWorld.java
>package com.metricom.modules.screens;

...

>So, I think I covered the stuff you mentioned before except for the messed
>up classpath in jserv.properties.
>
>I'm sure it is something completely stupid, I just haven't found it yet.

I haven't heard you mention setting the "module.packages" variable...
Referring again to the Turbine "Getting Started" document at

   http://java.apache.org/turbine/getting_started.html

I read

   Again, please refer to the FSD for more information about what each module 
   is used for. You can then tell Turbine to recognize this directory
structure 
   by modifying the TurbineResources.properties file to reference your
structure. 
   This is done by setting the module.packages to include your package. 

  module.packages=com.mycompany.modules

   The effect of this property setting is that it becomes the classpath for 
   modules within the framework. Within your code it is possible to load
other 
   modules and execute them directly. Examples of this will be shown later. 

When you get the error you described...

   The exception is:
   java.lang.Exception: Requested Screen not found: HelloWorld

it means that you are finding Turbine OK, but Turbine is not finding your
screen.
In order for Turbine to find your screen, it must be in a subpackage called
"screens" off of one of the packages mentioned in the "module.packages" line
of TurbineResources.properties.

Try that.

Stephen

P.S. as Jon mentioned, please make sure that your HelloWorld.java is compiled
 into a HelloWorld.class file in the same directory.






To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



Re: Inconsistencies

2000-02-10 Thread Stephen Adkins

At 11:48 AM 2/10/00 -0800, you wrote:

>> Personally I prefer "user" over "visitor" and changing the table name to
>> User to match the object.
>Jon has already vetoed.
>

I guess this is already settled...
but it's worth knowing that some databases (at least Oracle)
operate very oddly with a table called USER.
Because "user" is a reserved word, you always have to take
special care to enclose it in quotes and ensure that
it is always upper-case.
These are bugs just waiting to happen if you implement
a table named USER.

Stephen




To subscribe:[EMAIL PROTECTED]
To unsubscribe:  [EMAIL PROTECTED]
Problems?:   [EMAIL PROTECTED]



database.default.url for MySQL?

2000-02-06 Thread Stephen Adkins

Hi,

I am trying to get Turbine up and running on my system
and I ran into what I am sure is a very simple problem.

I have

   * RedHat 6.0 (with upgraded glibc-2.1.2-11)
   * Blackdown Java JDK 1.1.7 v3
   * JServ 1.1
   * Apache 1.3.9
   * MySQL 3.22.30
   * mm.mysql.jdbc-1.2b (MySQL JDBC drivers)
   * Apache-ECS-2129
   * Apache-Turbine-2129
   * village-1.1
   * JSDK2.0
   * jaf-1.0.1
   * javamail-1.1.2
   * jndi-1.2.1

I read the "install.txt" for Turbine, and
I tried to configure the TurbineResources.properties file
correctly but I don't know what to set for "database.default.url".

I consulted the "org.apache.turbine.db*" package for more information
but I was unable to discern anything.

Predictably, I am getting the correct login screen at

   http://raven.officevision.com:8080/servlets/Turbine

but when I try to log in with "turbine"/"turbine", I get a blank
screen and errors in the logs (see below).  I did create the
database tables as required (including the creation of the "turbine"
visitor).  I also created a database user named "turbine".
One thing I never did was specify anywhere what database 
("OV001") I was supposed to connect to.

Can anyone help my with the particular setting of
database.default.url?

Thanks,
Stephen

=
excerpt from TurbineResources.properties.
=

# These are your database settings, look in the
# org.apache.turbine.db* package for more information.
database.default.driver=org.gjt.mm.mysql.Driver
database.default.url=jdbc:oracle:thin:@localhost:1521:ORCL
database.default.username=turbine
database.default.password=turbine
database.maxConnections=8
database.expiryTime=360

=
jserv.log
=

/usr/ov/devel/apache/logs> tail jserv.log
[04/02/2000 23:51:19:811 CST] Turbine: init
[04/02/2000 23:51:19:855 CST] Turbine: Turbine init()!
[04/02/2000 23:51:20:952 CST] java.lang.Error: Error in
BasePeer.initTableSchema(): No suitable driver
at
org.apache.jserv.JServConnection.processRequest(JServConnection.java:320)
at org.apache.jserv.JServConnection.run(JServConnection.java:188)
at java.lang.Thread.run(Thread.java)
[04/02/2000 23:53:11:608 CST] java.lang.Error: Error in
BasePeer.initTableSchema(): No suitable driver
at
org.apache.jserv.JServConnection.processRequest(JServConnection.java:320)
at org.apache.jserv.JServConnection.run(JServConnection.java:188)
at java.lang.Thread.run(Thread.java)

=
error_log
=

sequoia[spadkins]:/usr/ov/devel/apache/logs> tail error_log
DbBrokerImpl: Is now turned on.
java.lang.Error: Error in BasePeer.initTableSchema(): No suitable driver
at
org.apache.jserv.JServConnection.processRequest(JServConnection.java:320)
at org.apache.jserv.JServConnection.run(JServConnection.java:188)
at java.lang.Thread.run(Thread.java)

=
jserv.properties
=

wrapper.classpath=/usr/local/src/Apache-Jyve-2129/bin/jyve.jar
wrapper.classpath=/usr/local/src/Apache-Turbine-2129/bin/turbine-2.0.jar
wrapper.classpath=/usr/local/src/Apache-ECS-2129/bin/ecs-1.2.jar
wrapper.classpath=/usr/local/src/village-1.1/village-1.1.jar
wrapper.classpath=/usr/local/javamail-1.1.2/mail.jar
wrapper.classpath=/usr/local/jaf-1.0.1/activation.jar
wrapper.classpath=/usr/local/jndi-1.2.1/lib/jndi.jar
wrapper.classpath=/usr/ov/devel/apache/libexec/ApacheJServ.jar
wrapper.classpath=/usr/local/JSDK2.0/lib/jsdk.jar
wrapper.classpath=/usr/local/src/mm.mysql.jdbc-1.2b/mysql_uncomp.jar
wrapper.classpath=/usr/local/java/lib/classes.zip

=
mysql session - demonstrates the DB is OK
=

/usr/ov/devel> mysql -u turbine -pturbine
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 3.22.30

Type 'help' for help.

mysql> select * from user where username = 'turbine';
ERROR 1046: No Database Selected
mysql> connect mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Connection id:11
Current database: mysql

mysql> select * from user where user = 'turbine';
+---+-+--+-+-+--
---+-+-+---+-+--
-+--+---++-++---
-+
| Host  | User| Password | Select_priv | Insert_priv |
Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv |
Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv |
Index_priv | Alter_priv |
+---+-+--+-+---

JServ+Turbine vs. WebLogic et.al.

2000-02-01 Thread Stephen Adkins

Hi,

I have been listening on the Turbine and JServ mailing lists for a while,
installing the packages, and evaluating them for a (hopefully) large-scale
web development project.  For this project, we need a web application
server and web application development framework.

The combination of JServ and Turbine appears very powerful and capable.
The decision facing me is whether to go with an open source solution
with its attendant costs and benefits (of which JServ+Turbine is the 
leading candidate), or to go with a commercial web application server 
product (of which BEA WebLogic is the leading candidate).

QUESTIONS

 * How does JServ+Turbine compare to commercial web application
   server packages?
 * How does it compare to BEA WebLogic in particular?
 * Under what technical or project conditions would you recommend
   one or the other?
 * Would it ever make sense to use both? (or do they overlap too much)
 * What are the features/capabilities which are lacking in 
   JServ+Turbine that are available BEA WebLogic?  vice-versa?

If JServ+Turbine is sufficiently functional/scalable, I would prefer
to go with it as the open source solution, and thus contribute more
developers to the Turbine community.  However, since the Turbine
developers also seem to know WebLogic, I would appreciate a candid
assessment so I can make the right decision.

Thanks,
Stephen Adkins
[EMAIL PROTECTED]

P.S. If I get enough substantial feedback on this, I will be happy to
create a feature matrix which makes clear the comparisons and which 
may assist in creating a roadmap for future Turbine development.
__

BACKGROUND

I consulted the Turbine Functional Design document at

   http://java.apache.org/turbine/fsd.html

and read the following.

   Turbine is not a web application server. It is a tool for building web
applications. 
   Your servlet engine is your application server and the application that
you develop 
   using this framework is your web application. 

So I concluded that the combination of JServ+Turbine is an open-source
alternative
to BEA WebLogic's Application Server software.

Meanwhile, I installed all of the packages on which Turbine depends,
including Village,
and read the statement at

   http://www.working-dogs.com/village/

which says

   History
   ---
   Village is inspired by the dbKona API documents available on
BEA/Weblogic's website
   http://weblogic.beasys.com/.
   The BEA WebXpress product is an excellent piece of software and it is
highly 
   recommended that you purchase it.

So I was not sure whether the developers would in fact recommend WebLogic for
those who could afford it.

Meanwhile, I did a good bit of research on available web application servers,
and I thought this might be valuable to share with the Turbine community.

Commercial Application Servers

   BEA Systems WebLogic 4.5.1
  http://www.beasys.com/products/weblogic/
   GemStone Systems, Inc.
  http://www.gemstone.com/index_gemj.html
   HAHT Software - HAHTsite Web Application Server
  http://www.hahtsite.com/
   IBM Software WebSphere Web Application Servers
  http://www-4.ibm.com/software/webservers/
   Inprise Application Server 4
  http://www.borland.com/appserver/
   NetDynamics Products
  http://www.netdynamics.com/products/
   Netscape Application Server
  http://www.netscape.com/appserver/v2.1/index.html
   Novera Software Inc.
  http://www.novera.com/Products/products.htm
   Oracle Application Server
  http://www.oracle.com/appserver/
   Persistence PowerTier
  http://www.persistence.com/Products/index.html
   Progress Apptivity Application Server
  http://www.progress.com/java/apptivity/appserv.htm
   Bluestone Sapphire-Web
  http://www.bluestone.com/products/sapphire/
   Silver Stream Application Server
  http://www.silverstream.com/website/SilverStream/Pages/products_f.html
   Sybase Enterprise Application Server
  http://www.sybase.com/products/easerver/

Open Source Application Servers

   Apache JServ + Turbine
  http://java.apache.org/jserv/
  http://java.apache.org/turbine/
   The Locomotive Project
  http://www.locomotive.org/locolink/disp?home
   Microstate Hamilton
  http://www.microstate.com/hamilton/
   Power Tier
  http://www.powertier.com/

Reviews

   Appserver Comparison Matrix, (updated frequently)
  http://www.flashline.com/components/appservermatrix.jsp
   Web Review - App Servers -- UNIX
  http://www.webreview.com/wr/pub/asunix
   Web Review - The Application Server Marketplace
  http://webreview.com/wr/pub/1999/02/26/appservers/index.html
   Web Review - What Do Application Servers Really Do
  http://webreview.com/wr/pub/1999/02/26/appservers/index2.html
   webreview.com - Application Server
  http://webreview.com/wr/pub/pt/Application_Server
   webreview.com - Applications Servers
  http://www.webreview.com/wr/pub/a